我尝试了很多方法
Cast<CustomObject>
,as Customobject
和ToArray(Customobject)
,但没有任何效果。
如何通过AddRange将List
或ArrayList
添加到CustomObject[]
数组?
代码真的很难。 但是如果你有时间,你可以从这里获得目的地列表的完整来源: http://www.codeproject.com/Articles/4012/C-List-View-v1-3?msg=3844172#xx3844172xx
这是自定义列表视图 我为第二列激活了一个组合框,因此我可以为一个单元格选择不同的值。 但在此之前,我必须添加一些东西来选择。 这是漏洞问题。
更新: 首先,感谢您的帮助! 其次,在网站的评论中找到了解决方案。 必须添加一些代码并将目标自定义数组更改为List
答案 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>
。