我有一个带有ReadOnlyCollection属性的类。我需要将ReadOnlyCollection转换为int []。如何才能做到这一点?是否可以在不迭代集合的情况下执行此操作?
答案 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();