如何将ReadOnlyCollection <t>转换为T []?</t>

时间:2010-03-11 22:39:36

标签: c#

我有一个带有ReadOnlyCollection属性的类。我需要将ReadOnlyCollection转换为int []。如何才能做到这一点?是否可以在不迭代集合的情况下执行此操作?

4 个答案:

答案 0 :(得分:10)

不,如果不迭代它,就不可能将ReadOnlyCollection转换为数组。这会将集合变成可写集合,违反了只读的合同。

迭代集合有不同的方法可以让你自己编写循环,例如使用CopyTo方法

int[] collection = new int[theObject.TheProperty.Count];
theObject.TheProperty.CopyTo(collection, 0);

或扩展方法ToArray:

int[] collection = theObject.TheProperty.ToArray();

答案 1 :(得分:8)

确实使用LINQ扩展方法myReadOnlyCollection.ToArray()

答案 2 :(得分:5)

没有迭代就没有任何方法。有一种内置方法可以做到这一点:

T[] myArray;
myCollection.CopyTo(myArray, 0);

或使用Linq:

var myArray = myCollection.ToArray();

答案 3 :(得分:1)

如果您使用的是.NET框架的更高版本ReadOnlyCollection<T>实现IEnumerable<T>IEnumerable<T>有一个扩展方法ToArray()。所以你要使用那种扩展方法......

var readOnly = new ReadOnlyCollection<int>(new List<int>() {1,2,3,4,5});
var myArray = readOnly.ToArray();