List – 我是否传递对象或引用?

好吧,我已经研究了generics并有以下问题:

List list=new List SomeClass MyInstance=SomeClass(); list.Add(MyInstance); 

我不确定将添加到列表中的内容 – 引用类型的引用或对象(指向MyInstance的实际值)。
编辑:或者我会添加指向实际对象的值(即参考数据类型)?

谢谢

处理引用类型时,您始终处理引用,因此引用将添加到列表中(实际引用的副本)。 你实际上没有选择; 这就是语言的运作方式。

假设someClass是引用类型(例如类)而不是值类型(例如struct),那么它是引用。

我也承认定义一个名为someClass的结构会非常恶魔

struct someClass

这里是关于参数传递的Jon Skeet文章的强制性链接 。

由于someClass是引用类型,因此对MyInstance的引用将被复制到列表中。

由于MyInstance是引用类型,因此将添加引用

该列表将存储对象的引用而不是对象实例。

实际上,List存储值由use数组和数组存储在堆栈上的引用并将对象实例存储在堆上。

如果您按照以下方式处理对象

 MyInstance = null 

那么,你无法读取MyInstance对象,

但你仍然可以读取列表中的对象,

因为你有两个引用指向MyInstance,

换句话说,该对象有两个参考,

一个是

 SomeClass MyInstance=SomeClass(); 

另一个存储在列表中,

而你只是处置其中一个,

所以你仍然可以阅读清单[0]