A generic classs is a class that takes one or more type parameters, which it then uses in the definition of the class. It can be thought of as a template for a class.
1 public class ThingContainer<TParam> 2 { 3 private TParam theThing; 4 5 public void SetThing(TParam newValue) 6 { 7 theThing = newValue; 8 } 9 }
You use a generic class by specifying a type for each of the type parameters.
1 ThingContainer<int> intContainer = new ThingContainer<int>(); 2 intContainer.SetThing(5); 3 4 ThingContainer<Dog> dogContainer = new ThingContainer<Dog>(); 5 dogContainer.SetThing(new Dog("Kirby", 5));
In this example, we use a generic class to store an object of an arbitary type. We use one version of the class to store an int and another to store a Dog. Notice that wherever we use the name of the generic class to define an instance, we need to supply a typename (e.g. int, Dog) as a parameter.