gpt4 book ai didi

c# - 哪个是 C# 中的有效对象?

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

我有一个基类 Base 和一个派生自 Base 类的 Derived1 和另一个派生类 Derived2 派生自 < strong>derived1.

下面我提到了一些对象创建的情况(接下来是类的多级继承)。有人可以帮助我理解无法创建对象的情况以及为什么在 C# 中无法创建对象吗?

Base b1 = new Base() //Possible 
Base b1 = new derived1() // Possible
Derived1 d1 = new Base() // Not Possible
Derived1 d1 = new Derived1() // Possible
Derived2 d2 = new Derived1() // ----
Derived1 d1 = new Derived2() // ----
Derived2 d2 = new Derived2() // Possible
Derived2 d2 = new Base() // ----
Base b1 = new Derived2() // ----

最佳答案

这是一个 super 简单的方法:

public class A { }
public class B : A { }
public class C : B { }

所以它就像反转定义一样简单:

A < B < C

(我在这里使用大于号,因为 B 是 A 的一切,甚至更多。C 是 B 和 A 的一切……以及更多。)

所以A可以支持A、B和C。B可以支持B和C。最后C只能支持C。

有效:

A z = new A();
A y = new B();
A x = new C();
B w = new B();
B v = new C();
C u = new C();

C# 不支持任何其他组合(因为 Liskov's substitution principle)。

关于c# - 哪个是 C# 中的有效对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679369/

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