我是否认为任何对象不会从System.ValueType继承,因此根据定义必须是参考类型?
我一直无法找到任何确凿的文档来备份这个概念。
答案 0 :(得分:6)
检查this是否有帮助。
答案 1 :(得分:1)
如果您仔细阅读Remarks,您会看到
数据类型分为值类型和引用类型。值 类型是堆栈分配或在结构中内联分配。 引用类型是堆分配的。参考和值类型都是 派生自最终基类Object。 如果是的话 值类型的行为就像一个对象,一个包装器 使值类型看起来像是在上面分配的引用对象 堆,并将值类型的值复制到其中。包装器是 标记为系统知道它包含值类型。这个流程 被称为拳击,反向过程称为拆箱。 装箱和拆箱允许将任何类型视为对象。
C#编译器做得非常出色,让您认为像int
long
这样的值类型有方法
答案 2 :(得分:0)
如果你在QI上并且Stephen Fry正在做他的正常事情,那就是一个易受影响的白痴认为聪明人的样子,那么他就会对“任何不继承System.ValueType的对象做出反应”根据定义,它是一个参考类型“有一个klaxon和一个闪烁的屏幕说”所有对象都是值类型或引用类型“。
然后他继续指出,最初在计算机科学中, object 意味着任何可以被计算机操纵的实体,因此包括.NET所具有的指针,即使它们是不适合 object 的后来定义(后面的词 用一种特定的屈尊的语调说)引用用它们的方法封装的对象,因此你错了。
艾伦戴维斯会指出每个人都知道你的意思,但是为时已晚,你的陈述只会助长弗莱温暖的沾沾自喜,特别是因为技术可能仅次于奥斯卡王尔德的行列。一些他喜欢认为他可以聪明地谈论的事情(也许在他一无所知的事情的行列中是首屈一指的,现在我想起来,他无法说出上述内容并且在某些事情上没有错。方式)。换句话说是的,你完全正确:)
(向那些没有看过很多英国电视节目的人致歉,因此不知道其中有什么意思)。