2011-01-19 102 views
1

在我之前的问题中(关于向ArrayList添加项目)其中一个海报写道“引用已经是一个对象” - 它是如何表示的?我不明白。我想引用就是我可以通过对象的地址:引用类型是一个对象吗?

object X=5; 

object A=X; //here I am assigning reference to X so both are pointing to copy of 5 

还与ArrayList的例子,它实际上卖场再次references..but我得到了与评论“System.Object的”引用类型混淆。这是什么意思?

我会很感激简单的例子。我理解值类型和ref.types之间的区别,但这是我无法弄清的,尽管我知道它的工作原理。

+2

你到底在问什么? – 2011-01-19 19:10:05

回答

4

你在你的代码中做了什么取得了一个值类型和“装箱”它,所以现在它是一个包含值“5”的堆的引用类型。我建议你通过试图了解价值/参考类型 C#,易变性/不变性拳击/拆箱的理解。

这里有一个很好的链接,让你开始:“在深度C#” http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx

乔恩斯基特的书也做这个(第2.3.4节)一份好工作。

希望有所帮助。

1

的第一行是一个创建盒装复制整数5到这个新的对象的引用的被存储在X

在第二行中,基准的值(装箱操作这是广泛的地址,但地址和引用逻辑上不同)被复制到A中,因为这只是一个“ldloc,stloc”副本。在这种情况下只有一个对象;在第一行创建的盒装对象。

相关问题