What are generics in c#.net?