2011-10-27 10 views
7

Soy un programador de Java aprendiendo C# en estos días.Interfaz de lista: de Java a C#

Por lo general, en Java utilizando las listas, debe ser la programación preferible contra su interfaz con el fin de cambiar entre implementaciones:

List<Object> list = new ArrayList<Object>(); 
//or 
list = new LinkedList<Object>(); 

¿Qué pasa con C#? ¿Existe un enfoque similar? ¿Puede alguien mostrarme un ejemplo? Desde ahora estoy construyendo una lista de esta manera, pero no creo que la lista es una interfaz:

List<int> list = new List<int>(); 
list.Add(2); 

Respuesta

8

En .NET también es preferible trabajar con el objeto más elevado posible en la jerarquía. Se podría utilizar la interfaz IList<T>:

IList<int> list = new List<int>(); 
list.Add(2); 

Y si no es necesario para acceder a la lista de índice también se puede utilizar la interfaz ICollection<T> que es aún más alto en la jerarquía.

O si solo deseas para enumerar la lista se puede utilizar la más alta de interfaz posible, que es IEnumerable<T>:

IEnumerable<int> list = new List<int>(new[] { 1, 2, 3 }); 
foreach(int item in list) 
{ 
    ... 
} 
1
IList<int> = new List<int>(); 

en C# es fácil - si se empieza con un I su interfaz.

1

List<T> implementa una serie de interfaces, incluyendo IList<T> y ICollection<T>. Es posible que deba examinar su código para determinar qué interfaz es la más adecuada.

+0

gracias ... ¿podría explicar la diferencia entre IList e ICollection en pocas palabras? – Heisenbug

+0

@Heisenbug - He vinculado a su documentación, y @Darin ya ha explicado una diferencia clave - que un 'IList ' admite el acceso indexado. –