在MSDN上,可以阅读以下内容:
也引用了引用类型 作为对象
我不明白。我认为引用类型的值指向生活在堆上的实际对象,即至少我会说“引用类型的实例也被称为对象”。或者我错过了什么?
还经常提到“引用类型的变量”..但是当它存储在列表中时,我只能具有引用类型的值。 我能正确理解吗?
答案 0 :(得分:2)
这里的术语可能有点令人困惑,因为它很容易(也很常见)邋..
class Foo { }
Foo f = new Foo();
这定义了引用类型Foo
,下一行定义了一个引用变量f
,它指向Foo的匿名实例(对象)。请注意,使用对象始终涉及两个“事物”。我们经常通过说“f是一个Foo对象”来简化一点,虽然这是实际的,但这不是完整的事实。
可能有所帮助的几点:
请注意,当您查看interface
类型时,只有引用的一半,没有接口的“实例”。
答案 1 :(得分:1)
引用的值指向堆中的对象。对象本身是引用类型,因为您通过引用访问它。 (尽管通过引用的整个重定向对你来说是透明的。你可能会认为你正在传递一个String对象,但实际上你正在传递一个对象的对象的引用,这对你来说已被解除引用。)
Reference本身(即指针,而不是堆上的对象)是一种值类型 - 只是为了混淆事物。
答案 2 :(得分:0)
你可以想象“参考”这个词只是指“指针”;您自己的类的对象列表包含指向堆分配对象的引用/指针。