【发布时间】:2012-10-11 10:45:46
【问题描述】:
在 C# 中,我知道默认情况下,传递给函数的任何参数都是通过复制的,也就是说,在函数内部,存在参数的本地副本。但是,当一个对象作为参数传递给另一个类时呢?
像下面这样的场景是通过引用传递还是通过值传递:
class MyClass {
private Object localObj;
public void SetObject(Object obj) {
localObj = obj;
}
}
void Main() {
Object someTestObj = new Object();
someTestObj.name = "My Name";
MyClass cls = New MyClass();
cls.SetObject(someTesetObj);
}
在这种情况下,类变量localObj 是否与在Main 驱动程序类中创建的someTestObj 具有相同的副本?或者这两个变量会指向不同的对象实例吗?
【问题讨论】:
-
“在 C# 中,我知道默认情况下,传递给函数的任何参数都将通过复制”,反之亦然。只有传递给函数的结构才会在函数范围内复制。对象总是通过引用,这意味着内存中只有一个版本,并且每个变量都指向它。
标签: c# pass-by-reference