【发布时间】:2013-09-08 19:44:26
【问题描述】:
当使用List<T>.ForEach 时,是传入的对象,即下例中的j,是通过引用还是通过值传递?
MyList.ForEach( j => {} );
如果我要这样做:
MyList.ForEach( j => {
j.someOtherList.Add("value");
});
这是作用于j 的副本还是作用于原始对象?
【问题讨论】:
-
视情况而定。
j是引用类型还是值类型的实例? -
这是一个
reference,但您不能将reference分配给另一个,但是因为它是reference,您可以更改/修改对象的所有属性。 -
@FrédéricHamidi:这并不取决于:值是通过 按值 传递的……但该值可能是引用(绝不是对象)。
-
@Jon,是的,即使值是引用,值也是按值传递的 :) 当我发表我的第一条评论时,我更关注
j作为实例之间的可能差异值或引用类型,特别是如果someOtherList本身就是引用类型的实例。
标签: c#