generic and non generic collections in c#