c# - 为什么不能从 C# 中的值类型派生?

标签 c# .net types

我知道所有值类型都是从 System.ValueType 隐式派生的。和结构可以实现接口(interface),但我需要知道为什么不能从 C# 中的值类型派生。

最佳答案

首先,值类型没有对象 header (因为它们不是对象),因此无法识别实际类型或进行虚拟分派(dispatch)。

其次 - 如何向子类型添加字段?编译器必须知道大小(用于堆栈空间等),因此:

Foo foo = ...

必须始终占用相同数量的空间。

同样,抽象基类型也行不通,因为您总是可以构建一个结构。

基本上,它们会是可怕的畸形物,残废且丑陋。

我发现有趣的是您想要一个值的子类型——这听起来有点像结构的混淆用法。

关于c# - 为什么不能从 C# 中的值类型派生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320726/

相关文章:

C# 新窗口焦点

c# - 使用 LINQ 获取最后 x 个连续项目

c# - ServiceStack CORS - 仅在 IE 中不响应 OPTIONS 请求

c# - Assembly.GetTypes() 返回类型的顺序是什么?

c# - 结构 - 现实生活中的例子?

Scala 类型 : least upper bounds

c# - nhibernate 一对一映射和非空 ="false"?

c# - 如何在不引用类本身的情况下调用 View 中的类内部的方法?

C# -- 我们可以将重载运算符称为 ClassName.operator+(p1, p2) 吗?

c# - 在 Python 中压缩并使用解压缩 C# 解压缩的最简单方法(反之亦然)