列出<t>:Marshall By Value或Marshall By Reference </t>

时间:2009-10-01 10:05:52

标签: c# .net

我有一个对象的集合。当我在该集合上添加一些对象时。它会保存该对象本身还是保存它的引用。

List<Student> myList;
Student std1 = new Student();
Student std2 = new Student();
myList.Add(std1);
myList.Add(std2);

myList会包含什么? std1和std2的重复副本或这两个对象的引用?

如果列表位于某个远程位置,我通过wcf服务访问它。然后我在这个列表中添加对象。会发生什么。这些对象将通过 MBV MBR 添加?

实际上我有List确定,我在这个列表中添加了Student的对象..

最后我说,假设我在其他机器上的某个程序中有这个List。我可以使用WCF服务访问该程序。通过WCF服务获取该程序的引用。然后我打电话给Program.myList.Add(学生)。现在将在该远程计算机上生成一个副本,并将其添加到myList或将保存​​引用?

2 个答案:

答案 0 :(得分:2)

您使用的是List<Object>Object是引用类型,因此您的列表将保留对实例的引用。

我不确定你对最后一部分的意思,请你详细说明。

答案 1 :(得分:0)

由于Object类型是引用类型,因此示例中的List将引用值存储到托管堆上作为Student对象分配的对象。