C# Generics in Constructors: A Step-by-Step Guide
C# Generics is a powerful feature that allows developers to create classes and methods that can work with any data type. This feature makes our code more flexible and reusable, which is essential in modern software development. In this article, we will create a simple project demonstrating how to use C# Generics in Constructors. We’ll be building a simple class that can store and retrieve items of any data type, and we’ll be using Visual Studio as our development environment.
Prefer a VIDEO format? Check out our VIDEO TO THIS ARTICLE RIGHT HERE!
Create a new C# console application project
First, we will create a new console application in Visual Studio. We will name it “GenericsDemo”. This step is necessary to create the foundation for our project and have a place to add our code.
- Open Visual Studio and click on “Create a new project.”

- Select “Console App (.NET 6)” from the list of templates.

- Give your project a name, for example, “GenericsDemo” and click on “Create.”

Create a custom class
In this step, we will create a custom class called “Person” which we’ll use later in the project. The Person class will have two properties, Name and Age.
class Person { public string Name { get; set; } public int Age { get; set; } }
Step 3: Create a generic class Next, we’ll create a new class in our project called “GenericStore.” This class will be our generic class that can store and retrieve items of any data type. To create a generic class, we need to use the “where” keyword followed by the type parameter T.
public class GenericStore<T> { private T _item; public GenericStore(T item) { _item = item; } public T GetItem() { return _item; } }
In this class, we have a private variable _item of type T, and a constructor that takes in a parameter of type T. We also have a public method called GetItem that returns the _item variable.
Use the generic class in the Main method
Now, we’ll use our generic class in the Main method of our program. In the Main method, we’ll create an instance of GenericStore, passing in an integer, string and a custom class as the generic parameter.
class Program { static void Main(string[] args) { // Creating an instance of GenericStore for int data type GenericStore<int> intStore = new GenericStore<int>(10); // Print the value stored in the intStore Console.WriteLine(intStore.GetItem()); // Creating an instance of GenericStore for string data type GenericStore<string> stringStore = new GenericStore<string>("Hello World"); // Print the value stored in the stringStore Console.WriteLine(stringStore.GetItem()); // Creating an instance of Person Person person = new Person { Name = "John", Age = 30 }; // Creating an instance of GenericStore for Person data type GenericStore<Person> personStore = new GenericStore<Person>(person); // Print the name of the person stored in the personStore Console.WriteLine(personStore.GetItem().Name); } }
In the above code, we are creating an instance of GenericStore for int, string and a custom class Person and passing respective data type value as a parameter to the constructor. And then we are calling the GetItem method for each instance and printing the result. The first instance is of int data type, so we are passing an integer value 10 to the constructor. The second instance is of string data type, so we are passing a string “Hello World” to the constructor. And the last instance is of Person data type, so we are passing an instance of Person class to the constructor.
Run the project
Finally, we’ll run the project to see our generic class in action. Go to the “Debug” menu and select “Start Without Debugging” or simply press “Ctrl + F5” on your keyboard. You should see the output “10”, “Hello World” and “John” printed in the console window. Like so:
10 Hello World John
Conclusion: C# Generics in Constructors
In this article, we’ve covered the basics of using C# Generics in Constructors. We’ve seen how powerful this feature can be by creating a simple project demonstrating how to use generics to create a class that can store and retrieve items of any data type. We’ve also seen how to use the generic class with custom classes, such as the Person class, demonstrating generics’ flexibility and reusability. C# Generics is a feature that is definitely worth exploring further.
It can make your code more efficient and reduce the amount of redundant code you need to write. Whether you’re a beginner or an intermediate developer, understanding how to use generics in your projects is an essential skill in modern software development.
If you’re new to C# and collections, it’s always a good idea to start with basic examples and then build on them as you gain more experience. And don’t forget that when in doubt, you can always refer to this article to help you understand C# Generics in Constructors. Also, if you are interested in API-related topics, check out this article about calling GET API in C#!
If you want to skyrocket your C# career, check out our powerful ASP.NET FULL-STACK WEB DEVELOPMENT COURSE, which also covers test-driven development and C# software architecture.