|
|
1
58
值类型构成了.NETs规则的一个例外,正是为了允许不需要通过引用间接寻址的轻量级对象。所以运行时多态性对它们不起作用,继承的大多数方面变得毫无意义。
要解决您的一个问题:
它的价值。我们在这里没有处理引用,所以内存中没有重叠。因此,将值类型强制转换为其基类型是毫无意义的(同样,除非我们讨论的是转换为
还不清楚吗?
假设我们得到了假设的结果
但在这里,我们实际上根本不使用继承。要使用继承,请想象以下内容
我们在其他地方用
以及,
卡巴姆
这个代码没有画圆。为什么?因为当我们把圆圈传给
在C++中,实际上可以导致这种行为。因此,C++中的OOP只对指针和引用工作,而不直接在值类型上工作。出于同样的原因,.NET只允许继承引用类型,因为您无论如何都不能将其用于值类型。
请注意,上面的代码
如果需要,请在.NET中工作
现在,.NET
能够
理论上允许你继承
|
|
|
2
10
来自ECMA 335: 值类型将被密封,以避免处理值切片的复杂性。 损害功能。 我不知道“值切片”是什么意思,但我猜它们是密封的,以便高效地实现CLR。 |
|
|
3
1
您可以在值类型上使用泛型类型参数进行某种有限形式的继承。 |
|
|
4
-2
因为值类型的每个实例都有不同的大小并存储在堆栈上。所以,如果您编写“Base=Derived”,其中“Base”和“Derived”是值类型,则会损坏堆栈。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |