2010-06-12 18 views
1

我希望能够快速将对象数组转换为其他类型的对象,例如String,但以下代码不起作用:简单的方法将对象数组转换为C#中的另一种类型#

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中,顺便说一句。

+7

男人,需要多长时间才能停止使用ArrayList? – ChaosPandion 2010-06-12 22:30:33

+0

嘿,我还是C#的新手。我应该用什么来代替? – Na7coldwater 2010-06-12 22:47:43

+0

使用泛型集合来代替ArrayList。泛型是ArrayList永远不可能的完全类型安全的。 – 2010-06-12 22:50:30

回答

5

最好的解决办法是使用List<string>

+2

...并欢迎来到一个新的世界;)真正值得让你的头脑在泛型上。 – spender 2010-06-12 23:13:34

4

使用LINQ:

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

请问为什么你在第一时间使用,而不是一个泛型集合类型ArrayList,?

1

你可以做这样的事情

myArray.Select(mySomething => new SomethingElse(mySomething)).ToArray() 

它转换为任何你喜欢:)

0

对于通用收藏夹+1,如List<T>,-1对于ArrayList,最好放在樟脑丸上。

相关问题