CSharp Best Practices Collections and Generics