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 Classpublic class MyGeneric<T>{void Add(T val) { }}//Create another class which consume MyGeneric classclass MyGenericTest{static void Main(){// Declare a generic list of type intMyGeneric<int> myGenericObj1 = new MyGeneric<int>();// Declare a generic list of type stringMyGeneric<string> myGenericObj2 = new MyGeneric<string>();}}Benefits of using Generics: