Generics provide a way for developers to define subroutines, functions, fields, properties as well as classes, structures, interfaces and even delegates in such a way that the parameters are not of any particular type. In a sense the constructs are defined in a generic approach. The .NET Framework contains the following namespaces:System.Collections, System.Collections.Generic. The latter mimics very much the features of the former however there are quite a few benefits of using the generic namespace. Learn more here.