What are Collections?
Collections are nothing but a grouping of items into a single unit. Before we start to go to the office, we are looking at our collection, that is “Bag." Bag is a collection of items like laptop (if company provided), Lunch box, Pen, ID card, Zandu balm, Vicks inhaler.
Now the question that arises in our mind is Generic and Non Generic collections.
The collection of different items into a single unit is called Non Generic collections. So we conclude that our Bag is a good example of Non Generic collection, since it contains different items as we mentioned above.
The collection of similar items into a single unit is called Generic Collections.
Now we think in programming view, here generic collections are nothing but the collections of same types (like int, double, long). The generic collections are specific to the type of data we are going to store in it. If we have to be clear about type of data, then generic collections is the preferable choice.
C# is loaded with different type of collections, but here I am taking a single collection for explaining, that is Stack, the following program shows how our Generic Stack is going to hold the similar type of data.
- namespace GenericAndNonGeneric
- {
- class Program
- {
- static void Main(string[] args)
- {
- Stack < int > GenericCollection = new Stack < int > ();
- GenericCollection.Push(1);
- GenericCollection.Push(2);
- GenericCollection.Push(3);
- GenericCollection.Push(4);
- GenericCollection.Push(5);
- Console.WriteLine("The Contents of the Generic Collection are:");
- foreach(int i in GenericCollection)
- {
- Console.WriteLine(i);
- }
- Console.ReadLine();
- }
- }
- }
The generic collections are available in namespace called System.Collections.Generic, need to specify data type in < >.
Example for Generic Collections
Array, Dictionary, List
Non generic collections are the collections of the different types, like storing different types of data as a single unit, in the below program we see Stack collection as a non generic collection.
- namespace GenericAndNonGeneric
- {
- class Program
- {
- static void Main(string[] args)
- {
- Stack NonGenericCollection = new Stack();
- NonGenericCollection.Push(1);
- NonGenericCollection.Push("C# coding");
- object o = "123Vivek";
- NonGenericCollection.Push(o);
- NonGenericCollection.Push("#@@@@*&&&");
- NonGenericCollection.Push(55.67);
- Console.WriteLine("The Contents of the Non Generic Collection are:");
- foreach(object obj in NonGenericCollection)
- {
- Console.WriteLine(obj);
- }
- Console.ReadLine();
- }
- }
- }
ArrayList, Hash Table.
Now we have to look at line of code “foreach(object obj in NonGenericCollection)” in above example, in this line we are converting all our entered data into a Object type, since we need a common holding point to hold different types of data, so we are using object type.
Performance Issue
Generic collections are faster than Non Generic collections, since type casting (Boxing) happens in the case of non generic collections.
Conclusion
Based on the requirement we have to decide the usage of collections, either Generic or Non Generic.
Some of the collections like Stack and Queue are used as both Generic and Non Generic collections.
Guys please put comments, it will help me to improve.

Gowtham RajamanickamPosted May 24, 2016, 1:18 AM
very good
Humayun Kabir MamunPosted May 24, 2016, 1:07 AM
Nice...
Kanaga RajPosted May 24, 2016, 12:58 AM
Nice Good. Easy to understand..
Abhishek SurPosted May 24, 2016, 12:48 AM
Its a nice article. Just wanted to add some more info to it : 1. Generic Collections are faster because Premitive types required to be boxed. But if you are using class type (object type) variables, it does not have any impact. Another good impact is the usage. When using non-generic types, you need to typecast always, which require more code, if you are not using dynamic though.
Rahul Pushpendu BhaskarPosted May 24, 2016, 12:34 AM
nice one...!
Vignesh ManiPosted May 23, 2016, 3:47 PM
Nice
Munesh SharmaPosted May 23, 2016, 1:54 PM
nice
Debasis SahaPosted May 23, 2016, 1:44 PM
Good One..