gpt4 book ai didi

c# - 继承自 System.ValueType

转载 作者:行者123 更新时间:2023-12-02 09:49:13 26 4
gpt4 key购买 nike

我在许多文章中读到所有值都是从System.ValueType派生的类型。但经过一番调查后,我发现所有值类型要么是 struct 要么是 enum。

众所周知,struct 不支持继承。那么值类型是如何从 System.ValueType 派生的呢?

最佳答案

So how value types derived from System.Value type.

基本上,雾里看花。它理论上派生自 ValueType,因此也派生自 object,后者提供对一些常见 API 的访问,例如 ToString()Equals,但它实际上并不是一个对象(除非“装箱”)——其中涉及到很多魔法。例如,当您对值类型调用 .ToString() 时,这意味着什么取决于您是否覆盖了它 - 它可能是一个虚拟调用(如果您还没有,这意味着“拳击”)静态调用(如果有);如果编译器不确定(泛型、外部类型等),则进行“约束”调用(将决策推迟到 JIT)。

运行时能够根据需要对值类型进行装箱(尽管这不一定高效),并且以装箱形式可以说盒子 源自那些东西。

但最终,这里重要的不是 struct Foo 派生自 ValueType - 这只是使事情正常工作的实现细节。重要的是,您不能选择任何其他基类型 - 与通常派生自 objectclass Bar 形成鲜明对比,但它可以从其他类派生。

关于c# - 继承自 System.ValueType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54550572/

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