我有以下定义了隐式转换运算符的类:
class A
{
...
}
class B
{
private A m_a;
public B(A a)
{
this.m_a = a;
}
public static implicit operator B(A a)
{
return new B(a);
}
}
现在,我可以将 A 隐式转换为 B。
但为什么我不能将 A[] 隐式转换为 B[] ?
static void Main(string[] args)
{
// compiles
A a = new A();
B b = a;
// doesn't compile
A[] arrA = new A[] {new A(), new A()};
B[] arrB = arrA;
}
谢谢,马尔基。
正如 Mehrdad Afshari 提到的,你隐式地这样做是不走运的。您必须明确说明,并且它将涉及数组副本。值得庆幸的是,你也许可以用一句话来做到这一点:
arrB = arrA.Cast<B>().ToArray();
虽然如果你只想迭代arrB
in a foreach
声明,您可以通过省略来避免复制ToArray()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)