我不确定将IList<string>
(IList
未实现ToArray属性)转换为string[]
数组的最佳方法是什么。
我无法使用Linq
,因为我正在使用.NET 2.0进行编译。任何想法都会很好。
答案 0 :(得分:26)
string[] strings = new string[list.Count];
list.CopyTo(strings, 0);
我不太确定我是否理解无LINQ限制?听起来如果ToArray
拥有它,您会使用IList<T>
。但事实证明这是因为IEnumerable<T>.ToArray
是在IEnumerable<T>
上定义的IList<T>
实现的扩展方法。那你为什么不用它?
答案 1 :(得分:4)
如果你被迫拥有IList,那么得到一个数组......
IList list;
var array = new List<string>(list).ToArray()
答案 2 :(得分:3)
ToArray是IEnumerable的扩展方法,IList实现IEnumerable。如果你导入它,你可以这样做。
答案 3 :(得分:1)
无论如何,您将不得不创建一个数组并使用列表中的内容填充它的内容。这是最直接的做法。
var arr = new string[Your_List.Count]
for(var ii = 0; ii < arr.Length; ii++){
arr[ii] = Your_List[ii];
}
答案 4 :(得分:0)
尝试:
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;
}
它只是一个粗糙的。可能是它的帮助。