将List <object>或Arraylist添加到CustomObject [] </object>数组中

时间:2012-09-13 12:29:07

标签: c# arrays list object

我尝试了很多方法 Cast<CustomObject>as CustomobjectToArray(Customobject),但没有任何效果。

如何通过AddRange将ListArrayList添加到CustomObject[]数组?

代码真的很难。 但是如果你有时间,你可以从这里获得目的地列表的完整来源: http://www.codeproject.com/Articles/4012/C-List-View-v1-3?msg=3844172#xx3844172xx

这是自定义列表视图 我为第二列激活了一个组合框,因此我可以为一个单元格选择不同的值。 但在此之前,我必须添加一些东西来选择。 这是漏洞问题。

更新: 首先,感谢您的帮助! 其次,在网站的评论中找到了解决方案。 必须添加一些代码并将目标自定义数组更改为List

5 个答案:

答案 0 :(得分:6)

list.Cast<CustomObject>().ToArray()
只要列表中的内容实际上是CustomObject

就会工作。如果它们可能是其他类型,则可以使用OfType<CustomObject>()代替Cast。这将过滤掉任何不兼容类型的内容。

答案 1 :(得分:1)

假设objects确实是CustomObject的实例,请使用LINQ Select方法:

objList.Select(o => o as CustomObject).ToArray();

否则您将获得一个null数组。

答案 2 :(得分:0)

如果是List<CustomObject>,那么让我们说

CustomObject[] coarr = list_of_customobject.ToArray();

如果是ArrayList那么

CustomObject[] coarr = arraylist.OfType<CustomObject>().ToArray();   

答案 3 :(得分:0)

如果您不确定所有对象是否属于CustomObject类型,请尝试

var result = list.OfType<CustomObject>.ToArray();

答案 4 :(得分:0)

严格地说,你不能元素添加到数组中,因为数组的长度在其生命周期内保持不变。你可以做两件事:

创建新数组

myArray = myTList.ToArray() // generic)
myArray = myArrayList.Cast<CustomObject>().ToArray() // cast, non-generic
myArray = myArrayList.OfType<CustomObject>().ToArray() // filter by type, non-generic

设置数组的元素

myArray[x] = myTList[y] // generic
myArray[x] = (CustomObject)myArrayList[y] // non-generic

我建议您尽可能使用通用集合。它们为您提供额外的类型安全。转换object变量会导致运行时错误,您可以使用泛型类型在编译时检测到这些错误。

如果您确实要元素添加到现有集合中,您可以尝试使用动态集合类型而不是数组:List<T> : IList<T>LinkedList<T> : ICollection<T>是一个好的指向开始,或者可能是更具体的类型,例如Stack<T>Queue<T>