假设我们有两个ref类型:A
和B
,A实现隐式转换运算符(到B):
class A
{
private B b;
public static implicit operator B(A a) { return a.b; }
}
class B
{
}
将A
数组转换为B
数组的最佳(简洁和/或快速)方法是什么?
答案 0 :(得分:3)
有一件事是合理的直接使用Linq:
A[] a = new A[5];//initialize elements
B[] b = a.Select(anA => (B)anA).ToArray();
然而使用Linq的Cast<>方法不起作用:(see why)
B[] b2 = a.Cast<B>.ToArray();//throws InvalidCastException
<小时/> 更新:这是一个不使用Linq:
B[] b = Array.ConvertAll(a, elem => (B) elem);
这可以在pre-lambda .NET 2.0中使用更详细的方法:
B[] b = Array.ConvertAll(a,
new Converter<A, B>(delegate(A elem) { return (B) elem; }));
......可能使用较短的版本:
B[] b = Array.ConvertAll(a, delegate(A elem) { return (B) elem; });