2008-11-30 141 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的;”在文件顶部

相关问题