将arraylist复制到数组时出现c#错误

时间:2011-06-14 14:52:53

标签: c#

我的项目中有2个arraylists,list1和list2。 (两者都包含9个字符串值,car1,car2,car3等。

我还有一个名为store_numbers的字符串数组,它可以包含52个String元素。 现在我想将我的值从list1和list2复制到数组中。 通过做:

  list1.CopyTo(store_numbers,0);

我认为这是正确的方法 我收到错误消息

  

源中至少有一个元素无法转换为   目标数组类型

任何知道我如何解决这个问题的人?

谢谢!

4 个答案:

答案 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中的所有项目都具有相同的数据类型。如果没有,则必须在复制之前将所有项目转换为字符串。