2008-11-30 175 views
15

我有一個ICollection<string>類型的對象。什麼是最好的方式轉換爲string[]ICollection <string> to string []

這怎麼能在.NET 2中完成?
如何在C#的更高版本中完成清潔工作,或許在C#3中使用LINQ?

回答

29

你可以使用下面的代碼片段將其轉換爲一個普通的數組:

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

這應該做的工作:)

+0

我需要初始化正確大小的陣列第一個.. 不能我只是這樣做: string [] futures = new string [] {}; FutureFVDictionary.Keys.CopyTo(futures,0); ; – leora 2008-11-30 11:54:38

+1

該數組必須首先被初始化爲正確的大小 - 否則CopyTo將失敗並出現ArgumentException。 – AdrianoKF 2008-11-30 12:06:27

+0

與列表(mycoll).ToArray()您不必擔心大小。 – gimel 2008-11-30 12:40:24

5

ICollection<String>的(簡單)的情況下,使用ToArray的:

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

編輯:與.net 2.0,你可以用一個額外的List<String>返回數組:

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

如果您正在使用C#3.0和.NET Framework 3.5,你應該能夠做到:

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

,你必須有 「使用System.Linq的;」在文件頂部

相關問題