gpt4 book ai didi

c# - 在 C# 中,我是否必须执行显式向上转换?

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

给定一个包含基类 B 和子类 S 的类层次结构:

class B { }
class S : B { }

我可以通过隐式转换将 S 分配给 B:

B b = new S();

如果我想将它向下转换回 S,我必须明确地这样做:

B b = new S();
...
S s = (S)b;

现在,我的理解是我们可以保证从 SB 的赋值兼容性始终存在,因此我们永远不必在下面执行显式向上转换方式:

S s = new S();
B b = (B)s; // or
B b2 = s as B;

这个断言是否正确,或者如问题所述,我是否必须执行显式向上转换?

最佳答案

如果类有明确的实现,你可以使用接口(interface):

interface I {
void Method();
}

class C : I {
void I.Method() { ... }
}

C c = new C();
c.Method(); // won't compile
((I)c).Method(); // have to cast to I first

关于c# - 在 C# 中,我是否必须执行显式向上转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065447/

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