Mam obiekt typu ICollection<string>
. Jaki jest najlepszy sposób przekonwertowania na string[]
.ICollection <string> na ciąg []
Jak to zrobić w .NET 2?
Jak można to zrobić czyściej w późniejszej wersji C#, być może używając LINQ w C# 3?
Mam obiekt typu ICollection<string>
. Jaki jest najlepszy sposób przekonwertowania na string[]
.ICollection <string> na ciąg []
Jak to zrobić w .NET 2?
Jak można to zrobić czyściej w późniejszej wersji C#, być może używając LINQ w C# 3?
Można użyć następującego fragmentu kodu, aby przekształcić go do zwykłej tablicy:
string[] array = new string[collection.Count];
collection.CopyTo(array, 0);
To powinno załatwić sprawę :)
W (trywialne) przypadku ICollection<String>
, wykorzystać ToArray:
String[] GetArray(ICollection<String> mycoll)
{
return mycoll.ToArray<String>();
}
EDIT: z .NET 2.0, można zwrócić tablicę z dodatkowym List<String>
:
String[] GetArray(ICollection<String> mycoll)
{
List<String> result = new List<String>(mycoll);
return result.ToArray();
}
Kompilator może wywnioskować argument typu, więc mycoll.ToArray() będzie w porządku, bez potrzeby używania części
Metoda ta używa metody kopiowania tablicowego, więc bezpośrednie kopiowanie tablicy byłoby lepszym rozwiązaniem niż tworzenie listy, która jest innym obiektem. –
Lista
Jeśli używasz C# 3.0 i .NET Framework 3.5, powinieneś być w stanie to zrobić:
ICollection<string> col = new List<string>() { "a","b"};
string[] colArr = col.ToArray();
oczywiście, trzeba mieć "za pomocą System.Linq;" na górze pliku
Również lista
Zapytał o ICollection
To jest najlepsza odpowiedź w mojej opinii – reggaeguitar
czy muszę najpierw zainicjować tablicę o właściwym rozmiarze .. cant Właśnie robię to: string [] futures = new string [] {}; FutureFVDictionary.Keys.CopyTo (kontrakty terminowe, 0); ; – leora
Tablica musi najpierw zostać zainicjalizowana do prawidłowego rozmiaru - w przeciwnym razie funkcja CopyTo zakończy się niepowodzeniem z wyjątkiem ArgumentException. – AdrianoKF
z listą (Mycoll) .ToArray() nie musisz się martwić o rozmiar. –
gimel