Se puede obtener acceso a los elementos de esta colección utilizando un índice entero. Los índices de esta colección están basados en cero.
Cuando vaya a decidir si debe utilizar la clase List o la clase ArrayList, que tienen una funcionalidad similar, recuerde que, en la mayoría de los casos, el rendimiento de List es mejor y que tiene seguridad de tipos. Si para el tipo T de la clase List se utiliza un tipo de referencia, el comportamiento de ambas clases es idéntico. Sin embargo, si se utiliza un tipo de valor para el tipo T, habrá que tener en cuenta los problemas relacionados con la implementación y la conversión boxing.
Si se utiliza un tipo de valor para el tipo T, el compilador genera específicamente una implementación de la clase List para ese tipo de valor. Esto significa que no será necesario utilizar la conversión boxing para un elemento de lista de un objeto List antes de poder utilizar dicho elemento, por lo que, después de crear unos 500 elementos de lista, el ahorro de memoria por no aplicar la conversión boxing a los elementos de lista será mayor que la memoria utilizada para generar la implementación de la clase.
Asegúrese de que el tipo de valor que se utiliza para el tipo T implementa la interfaz genérica IEquatable. Si no, los métodos como Contains deben llamar al método Object.Equals(Object), que aplica la conversión boxing al elemento de lista afectado. Si el tipo de valor implementa la interfaz IComparable y el usuario es el propietario del código fuente, implemente también la interfaz genérica IComparable para evitar que los métodos BinarySearch y Sort apliquen la conversión boxing a los elementos de lista. Si el código fuente no es suyo, pase un objeto IComparer a los métodos BinarySearch y Sort
Supone una ventaja poder utilizar la implementación específica de tipo de la clase List en lugar de usar la clase ArrayList o escribir uno mismo una colección de contenedores con establecimiento inflexible de tipos El motivo es que la propia implementación debe hacer lo que .NET Framework ya realiza por el usuario y que Common Language Runtime es capaz de compartir los metadatos y el código del Lenguaje intermedio de Microsoft, algo que la propia implementación no puede hacer.