我的项目中有2个arraylists,list1和list2。 (两者都包含9个字符串值,car1,car2,car3等。
我还有一个名为store_numbers的字符串数组,它可以包含52个String元素。 现在我想将我的值从list1和list2复制到数组中。 通过做:
list1.CopyTo(store_numbers,0);
我认为这是正确的方法 我收到错误消息
源中至少有一个元素无法转换为 目标数组类型
任何知道我如何解决这个问题的人?
谢谢!
答案 0 :(得分:12)
ArrayList
中有一些不是字符串的内容。
最好的解决方法是不使用ArrayList
!自.NET 2.0问世以来,它已经过时了。请改用List<string>
。然后编译器将阻止您在列表中首先放置非字符串,并且您的副本应该可以正常工作。
答案 1 :(得分:1)
你真的确定arraylists只包含字符串吗?错误消息指示其中一个arraylists中的至少一个对象不是字符串。如果在出现问题的地方设置断点,您应该能够查看arraylist内容。
此外,您根本不应该使用ArrayList
- 它已被弃用。使用List<String>
来获得类型安全。
答案 2 :(得分:1)
你可能接近这个:
ArrayList list1 = new ArrayList{"car1",2,"car3","car4","car5",
"car6","car7","car8","car9"};
string[] store_numbers = new string[] {"10","11","12","13","14","15",
"16","17","18"};
list1.CopyTo(store_numbers,0);
以上将抛出以下错误:
`At least one element in the source array could not be cast
down to the destination array type.`
list1中有数字2,这就是你在这种情况下得到错误的原因。更改为List<string>
以避免此情况。
答案 3 :(得分:0)
确保ArrayList
中的所有项目都具有相同的数据类型。如果没有,则必须在复制之前将所有项目转换为字符串。