gpt4 book ai didi

c# - OpCodes.Castclass。有必要吗?

转载 作者:行者123 更新时间:2023-11-30 17:17:46 25 4
gpt4 key购买 nike

当您在堆栈顶部引用 (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();

最佳答案

我猜你有这样的事情:

class A
{
public void Foo() { }
}

class B : A
{
}

需要在以下两者之间做出决定:

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

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

两者都有效。但是强制转换不是必需的,因为 B 继承了 A 的所有成员。

关于c# - OpCodes.Castclass。有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6265453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com