2011-11-10 11 views

Respuesta

26

Uso ICollection<T>.CopyTo:

string[] strings = new string[list.Count]; 
list.CopyTo(strings, 0); 

No estoy muy seguro de si entiendo la restricción de no-LINQ sin embargo? Parece que usaría ToArray si lo tuviera IList<T>. Pero resulta que sí lo hace porque IEnumerable<T>.ToArray es un método de extensión definido en IEnumerable<T> del cual IList<T> se implementa. Entonces, ¿por qué no solo usas eso?

+0

16 upvotes después de una hora de un método .net-marco viejo y familiar normal. Debería responder más a menudo las preguntas de C#;) –

1

De una forma u otra, tendrá que crear una matriz y completar el contenido con lo que está en la lista. Esta es la forma más directa de hacerlo.

var arr = new string[Your_List.Count] 

for(var ii = 0; ii < arr.Length; ii++){ 
    arr[ii] = Your_List[ii]; 

} 
3

ToArray es un método de extensión de IEnumerable, e IList implementa IEnumerable. Puedes hacerlo si importas eso.

0

intento:

public static T[] ToArray<T>(this IList<T> list) 
    { 
     if (list is Array) return (T[]) list; 

     T[] retval = new T[list.Count]; 
     for (int i = 0; i < retval.Length; i++) 
      retval[i] = list[i]; 

     return retval; 
    } 

a sólo un áspero .may ser su ayuda.

4

si se ven obligados a tener IList, a continuación, para obtener una matriz ...

IList list; 
var array = new List<string>(list).ToArray() 
Cuestiones relacionadas