ICollection <string> в строку []

У меня есть объект типа ICollection<string>. Каков наилучший способ преобразования в string[].

Как это можно сделать в .NET 2?
Как это можно сделать более чистым в более поздней версии С#, возможно, используя LINQ в С# 3?

Ответы

Ответ 1

Вы можете использовать следующий фрагмент, чтобы преобразовать его в обычный массив:

string[] array = new string[collection.Count];
collection.CopyTo(array, 0);

Это должно выполнить задание:)

Ответ 2

Если вы используете С# 3.0 и .Net framework 3.5, вы должны уметь:

ICollection<string> col = new List<string>() { "a","b"};
string[] colArr = col.ToArray();

конечно, вы должны иметь "using System.Linq;" в верхней части файла

Ответ 3

В (тривиальном) случае ICollection<String> используйте ToArray:

String[] GetArray(ICollection<String> mycoll)
{
    return mycoll.ToArray<String>();
}

EDIT: с .Net 2.0 вы можете вернуть массив с дополнительным List<String>:

String[] GetArray(ICollection<String> mycoll)
{
    List<String> result = new List<String>(mycoll);
    return result.ToArray();
}