如何在不使用Linq </string>的情况下将IList <string>转换为字符串[]

时间:2011-11-10 14:11:25

标签: c# .net .net-2.0

我不确定将IList<string>IList未实现ToArray属性)转换为string[]数组的最佳方法是什么。

我无法使用Linq,因为我正在使用.NET 2.0进行编译。任何想法都会很好。

5 个答案:

答案 0 :(得分:26)

使用ICollection<T>.CopyTo

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;  
    }  

它只是一个粗糙的。可能是它的帮助。