OpCodes.Castclass。 有必要吗?

当你准备调用带有类型参数的方法时,当你在堆栈顶部引用(B)的实例时,是否需要发出OpCode.CastClass(typeof(A)),其中B是类,派生自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(); 

我想你有这样的事情:

 class A { public void Foo() { } } class B : A { } 

并需要决定:

 B b = new B(); b.Foo(); 

 B b = new B(); ((A)b).Foo(); 

两者都有效。 但是演员没有必要,因为Binheritance了A所有成员。