【发布时间】:2012-01-11 12:23:08
【问题描述】:
由于不了解值类型的变量实际包含什么,因此初学者通常会混淆引用类型和值类型之间的区别。我们知道:
- 值类型存储实际值
- 引用类型只存储对象的引用
是否可以检查每种变量以查看值或实际引用本身?引用是否存储为某种编码值?我知道引用可以按值传递,所以我假设是这样。
我认为这将有助于新人的理解,并且非常有趣。
【问题讨论】:
-
你会看到的唯一的东西是一个地址,一个看似随机的数字。你为什么想看这个?
-
巩固变量中的不是他们设置的对象,而是一个地址的想法。我们将如何访问它?
-
@m.edmonson,对您的问题感到困惑。在 .NET 中,对象的物理地址在每次 GC 执行标记和清除时都会发生变化,这是基本的。这是一种短暂的品质,开发人员对此并不感兴趣。
-
当您将类型的声明与变量的声明混为一谈时,初学者也会感到困惑。 “class C{}”是一个类型的声明。 “C c;”是变量的声明。同样,说“值类型将值存储在声明中”是令人困惑的。不。值类型不存储任何内容,并且声明是源代码编辑器中的一大块文本。值类型的变量 存储值。它将它存储在与变量关联的存储中。
-
@Dykam, Garry Vass:我在 StackOverflow 上的第一讨厌是人们说“你不应该想知道那个”。为什么要积极扼杀好奇心?要么回答问题,要么别管 OP!