7

我是否正确地相信任何不继承自System.ValueType的对象因此必须定义为引用类型?

我一直无法找到任何确凿的文件来支持这个概念。

4

3 回答 3

6

检查是否有帮助。

在此处输入图像描述

于 2011-12-13T12:36:50.967 回答
1

如果您仔细阅读备注,您会看到

数据类型分为值类型和引用类型。值类型要么是堆栈分配的,要么是在结构中内联分配的。引用类型是堆分配的。引用类型和值类型都派生自最终的基类 Object。如果值类型必须表现得像对象,则在堆上分配一个使值类型看起来像引用对象的包装器,并将值类型的值复制到其中。包装器被标记以便系统知道它包含一个值类型。这个过程称为装箱,相反的过程称为拆箱。装箱和拆箱允许将任何类型视为对象。

C# 编译器做得很好,让你认为值类型像int long有方法

于 2011-12-13T12:50:01.517 回答
0

如果你在 QI 上并且斯蒂芬弗莱正在做他正常的事情,成为一个易受影响的白痴认为一个聪明人的样子,那么他会对“任何不从 System.ValueType 继承的对象因此定义必须是一个引用类型”,带有一个喇叭和一个闪烁的屏幕,上面写着“所有对象都是值类型或引用类型”。

然后他继续指出,最初在计算机科学中,对象是指任何可以被计算机操作的实体,因此包括指针,.NET 有,即使它们不符合后来的对象定义(这个词后来带着某种居高临下的语气说)指的是用它们的方法封装的对象,因此你错了。

艾伦戴维斯会指出每个人都知道你的意思,但为时已晚,你的陈述只会助长弗莱的自鸣得意的温暖光芒,特别是因为在他喜欢的事物中,技术可能仅次于奥斯卡王尔德认为他可以聪明地谈论(也许在他一无所知的事情中首屈一指,现在我想起来了,他不可能设法说出上述内容而不以某种方式弄错)。

换句话说,是的,你是完全正确的:)

(向那些没有看过太多英国电视的人道歉,因此不知道这意味着什么)。

于 2011-12-13T23:12:00.077 回答