当准备调用方法时,是否需要在堆栈顶部引用(B)实例时发出OpCode.CastClass(typeof(A)),其中B是类,派生自A类型A的参数?
增加:
interface IFoo
{
void IFoo();
}
public class A:IFoo
{
public void IFoo()
{
}
}
public class B:A,IFoo
{
new public void IFoo()
{
}
}
var b = new B();
(b as IFoo).Foo();
((b as A) as IFoo).Foo();
答案 0 :(得分:2)
我猜你有这样的事情:
class A
{
public void Foo() { }
}
class B : A
{
}
需要在:
之间做出决定B b = new B();
b.Foo();
和
B b = new B();
((A)b).Foo();
两者都有效。但是演员表没有必要,因为B
继承了A
的所有成员。