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.
精彩评论