Con la lista genérica, puede Add
/Remove
etc. a bajo precio (al menos, al final). Cambiar el tamaño de una matriz (para agregar/eliminar) es más caro. El inconveniente obvio es que una lista tiene capacidad extra, por lo que quizás desperdicie unos pocos bytes, aunque no vale la pena preocuparse en la mayoría de los casos (y puede recortarla).
En general, preferir listas a menos que sepa sus datos nunca cambian de tamaño.
API-wise, ya que LINQ hay poco para elegir entre ellos (es decir, los métodos adicionales en List<T>
son en gran medida duplicados por LINQ, por lo que los arrays los obtienen de forma gratuita).
Otra ventaja es que con una lista que no es necesario para exponer un colocador:
private readonly List<Foo> items = new List<Foo>();
public List<Foo> Items { get { return items; } }
eliminación de una serie de null
errores, y que le permite mantener el control sobre los datos (especialmente si se utiliza una implementación diferente de IList<>
que admite la inspección/validación cuando se cambian los contenidos).
Su clase sería más limpia si utilizó Propiedades auto-implementadas: public string EmployeeName {get; conjunto;}. Usar nombres completos como EmployeeName ayudaría también. Ah, y ¿qué tal algunos tipos también? :-) –