从ValueType继承引用类型

本文关键字:引用类型 继承 ValueType | 更新日期: 2024-04-23 15:42:20

我们知道,在框架中,许多值类型,即Int32、Double等,都继承自引用类型,即抽象类(System.ValueType和internSystem.Object类)。现在我想知道是否可以通过C#代码显式地模拟类似的概念。是的,我绝对知道C#编译器规则会阻止它完成。我不知道VB.NET是否也阻止?

下面的代码示例演示得非常清楚。

    //Error code : Can not be done
    public abstract class MyClass
    {
    }
    public struct MyStruct : MyClass
    {
    }

所以我虽然会尝试通过ilasm.exe做同样的事情,但它给出了一个奇怪的错误,除了大量的谷歌搜索之外,我无法解决。无论如何,我想问你的是,在框架内可以进行这种继承,但在框架外是做不到的。

因此,有什么方法可以模拟这种情况吗?

不,在解决现实世界的问题方面,我没有取得任何成就。只会满足我的思想和学习

谢谢&快乐编码,

Zenwalker:)

从ValueType继承引用类型

请参阅ECMA 335(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf)

第I.8.9.10节(值类型继承):

在未装箱的形式中,值类型不继承自任何类型。装箱的值类型应继承直接从System.ValueType继承,除非它们是枚举,在这种情况下,它们应继承来自CCD_ 2。装箱的值类型应密封。

逻辑上,对应于值类型的装箱类型

是一种对象类型。

将指定哪个对象类型是它的基类型(即,它从中继承的对象类型)。

将具有未定义字段的基类型。

将被密封,以避免处理价值切片的复杂性。

这里指定的限制性更强的规则允许在不严重损害功能的情况下更高效地实现。

因此,非枚举值类型只能从system.ValueType.

继承,这是通用类型系统的限制,而不是C#语言的限制