2011-05-11 8 views

Respuesta

9

Como List<T> implementa la interfaz IList, simplemente puede proporcionar el List<T>. Si es necesario, simplemente ejecútelo:

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

No tiene que hacer ninguna conversión en absoluto. Un List<T> implementa la interfaz IList.

Si necesita el tipo IList por ejemplo para usar una sobrecarga específica, solo use la sintaxis de conversión (IList)theList.

10

Para aclarar las otras respuestas:

IList<T> hace no requieren la aplicación de un tipo a aplicar también IList. IEnumerable<T> requiere IEnumerable. Podemos salirse con la nuestra con IEnumerable<T> porque una secuencia de T siempre se puede tratar como una secuencia de objetos. Pero una lista de jirafas no puede tratarse como una lista de objetos; puedes agregar un tigre a una lista de objetos.

Sin embargo, List<T> hace inseguro implemente IList. Si intenta agregar un tigre a un List<Giraffe> colocándolo primero en IList, obtendrá una excepción.

Así que para responder a la pregunta: ¿Si todo lo que tiene en la mano es un IList<T>, puede especulativamente echarlo a IList con los "como" operador, y si eso no funciona, a continuación, crear una nueva ArrayList o List<object> y copiar el contenido pulg. Si lo que tiene a mano es List<T>, entonces ya tiene algo que implementa IList directamente.

+0

<< ... agrega un tigre a una lista ... obtendrás una excepción. >> sin mencionar un lío desagradable. - apreciar la objetificación -vHelpful. – justSteve

Cuestiones relacionadas