2011-11-10 12 views

risposta

26

Uso ICollection<T>.CopyTo:

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

Io non sono del tutto sicuro se ho ben capito la restrizione no-LINQ però? Sembra che tu voglia usare ToArray se lo avesse IList<T>. Ma si scopre che lo fa perché IEnumerable<T>.ToArray è un metodo di estensione definito su IEnumerable<T> di cui IList<T> attrezzi. Quindi perché non lo usi?

+0

16 upvotes dopo un'ora per un metodo .NET framework vecchio e familiare normale. Dovrei rispondere più spesso alle domande di C#;) –

1

In un modo o nell'altro, si dovrà creare una matrice e riempirne il contenuto con quello che è nella lista. Questo è il modo più semplice per farlo.

var arr = new string[Your_List.Count] 

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

} 
3

ToArray è un metodo di estensione di IEnumerable e IList implementa IEnumerable. Puoi farlo se lo importi.

0

prova:

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; 
    } 

Il suo solo una approssimativa .May essere il suo aiuto.

4

se si è costretti ad avere IList, quindi per ottenere un array ...

IList list; 
var array = new List<string>(list).ToArray() 
Problemi correlati