MSDN文本说明 - 引用类型是对象

时间:2011-01-20 08:47:17

标签: c# reference terminology msdn

在MSDN上,可以阅读以下内容:

  

也引用了引用类型   作为对象

我不明白。我认为引用类型的值指向生活在堆上的实际对象,即至少我会说“引用类型的实例也被称为对象”。或者我错过了什么?

还经常提到“引用类型的变量”..但是当它存储在列表中时,我只能具有引用类型的值。 我能正确理解吗?

3 个答案:

答案 0 :(得分:2)

这里的术语可能有点令人困惑,因为它很容易(也很常见)邋..

class Foo { }
Foo f = new Foo();

这定义了引用类型Foo,下一行定义了一个引用变量f,它指向Foo的匿名实例(对象)。请注意,使用对象始终涉及两个“事物”。我们经常通过说“f是一个Foo对象”来简化一点,虽然这是实际的,但这不是完整的事实。

可能有所帮助的几点:

  • 实例(对象)没有名称
  • 您只能命名参考变量
  • 您无法将实例(本身)作为参数传递或返回值
  • 您无法创建实例数组
  • 这意味着您只能传递/复制/存储参考文献
  • 这些引用的行为与值类型(!)
  • 完全相同

请注意,当您查看interface类型时,只有引用的一半,没有接口的“实例”。

答案 1 :(得分:1)

引用的值指向堆中的对象。对象本身是引用类型,因为您通过引用访问它。 (尽管通过引用的整个重定向对你来说是透明的。你可能会认为你正在传递一个String对象,但实际上你正在传递一个对象的对象的引用,这对你来说已被解除引用。)

Reference本身(即指针,而不是堆上的对象)是一种值类型 - 只是为了混淆事物。

答案 2 :(得分:0)

你可以想象“参考”这个词只是指“指针”;您自己的类的对象列表包含指向堆分配对象的引用/指针。