 Classes and structs can be generic.public class List

List list = new List();
list.Add(6);
list.Add(2);


interface IEnumerable


delegate R Func(T1 a1, T2 a2);


public static T[] CombineArrays(T[] a, T[] b)

string[] a = new string[] { "a", "b", "c" };
string[] b = new string[] { "1", "2", "3" };
string[] c = CombineArrays(a, b);

double[] da = new double[] { 1.2, 2.17, 3.141592 };
double[] db = new double[] { 4.44, 5.6, 6.02 };
double[] dc = CombineArrays(da, db);



Type-parameters are names used in place of concrete types when defining a new generic.They may be associated with classes or methods by placing the type parameter in angle brackets .