What are generics in C#? [closed]

What are generics in C#, illustrated with a simple example? What are some related articles or websites for this topic?


Generics refers to the technique of writing the code for a class without specifying the data type(s) that the class works on.

You specify the data type when you declare an instance of a generic class. This allows a generic class to be specialized for many different data types while only having to write the class once.

A great example are the many collection classes in .NET. Each collection class has it's own implementation of how the collection is created and managed. But they use generics to allow their class to work with collections of any type.

http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx


There is really nothing special about Generics in C#. C# just likes to take well-known concepts and call them something different (e.g. calling procedures "static methods" or calling flatMap "SelectMany"). In this particular case, Generics are just C#'s name for rank-1 parametric polymorphism.


From MSDN:

Generics are the most powerful feature of C# . Generics allow you to define type-safe data structures, without committing to actual data types. This results in a significant performance boost and higher quality code, because you get to reuse data processing algorithms without duplicating type-specific code. In concept, generics are similar to C++ templates, but are drastically different in implementation and capabilities.

https://msdn.microsoft.com/en-us/library/ms379564.aspx