在C#中将对象数组转换为另一种类型的简单方法

时间:2010-06-12 22:28:27

标签: c# arrays

我希望能够快速将对象数组转换为其他类型,例如String,但以下代码不起作用:

String[] a = new String[2];
a[0] = "Hello";
a[1] = "World";
ArrayList b = new ArrayList(a);
String[] c = (String[]) b.ToArray();

我不想这样做:

String[] a = new String[2];
a[0] = "Hello";
a[1] = "World";
ArrayList b = new ArrayList(a);
Object[] temp = b.ToArray();
String[] c = new String[temp.Length];
for(int i=0;i<temp.Length;i++)
{
    c[i] = (String) temp[i];
}

是否有一种简单的方法可以在不使用临时变量的情况下执行此操作? 编辑:顺便说一句,这是在ASP.NET中。

4 个答案:

答案 0 :(得分:6)

最好的解决方案是使用List<string>

答案 1 :(得分:4)

使用LINQ:

String[] c = b.Cast<String>().ToArray();

请问您为什么首先使用ArrayList而不是通用集合类型?

答案 2 :(得分:1)

您可以执行类似

的操作
myArray.Select(mySomething => new SomethingElse(mySomething)).ToArray() 

将它投射到你喜欢的任何地方:)

答案 3 :(得分:0)

+1代表List<T>等通用集合,ArrayList代表-1,最好放在樟脑丸上。