开发者

Easy way to cast an object array into another type in C#

I want to be able to be able to quickly cast an array of objects to a different type, such as String, but the following code doesn't work:

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

And I don't want to have to do this:

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.Leng开发者_StackOverflow中文版th;i++)
{
    c[i] = (String) temp[i];
}

Is there an easy way to do this without using a temporary variable? Edit: This is in ASP.NET, by the way.


The best solution would be to use a List<string>.


Use LINQ:

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

May I ask why you're using ArrayList in the first place, instead of a generic collection type?


You can do something like

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

to cast it to anything you like :)


+1 for the generic Collections such as List<T>, -1 for ArrayList which is better be put on mothballs.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜