Generics were of one of main new features in .NET 2.0 languages. In .NET 1.x developers had to use System.Collections non-Generic collections to save their objects but no type checking were occurred for them. Therefore they had to do a type casting when they were retrieving their objects from collections. Now that Microsoft introduced Generics as a type specific alternative for those old means, life is pretty easier for each developer. One of most important reasons to use Generics instead of non-Generic collections is performance.