Generics in .NET

Generics : Generics allow a type or method to operate on objects of various types while providing compile time type safety; that means if you add in generics class different type variable. Eg., string and int in a same list then it will throw a compile time error. Generics are available in the System.Collections.Generic Namespace.

Let's see other definitions:

Generics are a new feature in version 2.0 of the C# language and the Common Language Runtime (CLR). Generics introduce to the .NET Framework the concept of type parameters, which make it possible to design classes and methods that defer the specification of one or more types until the class or method is declared and instantiated by client code. (Source MSDN)

Let's see an example.

//Create a Generic Class
public class MyGeneric<T>
void Add(T val) { }
//Create another class which consume MyGeneric class
class MyGenericTest
static void Main()
// Declare a generic list of type int
MyGeneric<int> myGenericObj1 = new MyGeneric<int>();
// Declare a generic list of type string
MyGeneric<string> myGenericObj2 = new MyGeneric<string>();

Benefits of using Generics:

  1. Generics provide Type Safety and the performance is faster.
  2. You can create your own collection class.
  3. You can create your own generic interfaces, classes, methods, events and delegates.