#323 – A Generic Class is a Template for a Class

A generic class 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.

    public class ThingContainer<TParam>
        private TParam theThing;

        public void SetThing(TParam newValue)
            theThing = newValue;

You use a generic class by specifying a type for each of the type parameters.

            ThingContainer<int> intContainer = new ThingContainer<int>();

            ThingContainer<Dog> dogContainer = new ThingContainer<Dog>();
            dogContainer.SetThing(new Dog("Kirby", 5));

In this example, we use a generic class to store an object of an arbitrary 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.