【发布时间】:2015-08-28 10:03:34
【问题描述】:
class A
{
public int B { get; set; }
public int C { get; set; }
}
private static void function(A a)
{
if (a == null) a = new A();
a.B = 2;
a.C = 3;
}
A a = new A(); //a is not null
a = null; // a is null
function(a);
//a is still null
如果我使用 C++ 类比,我的理解是,虽然“a”是指向函数通过引用访问的“A”类型对象的指针,但指针本身用作值类型。最终结果是变量“a”保持为空。
所以我的问题是,如果我想实例化变量,就好像指针通过引用传递给函数一样?这可行吗?
【问题讨论】:
-
看看ref关键字
-
out 是正确的,因为您覆盖了指针。
-
@MikeMiller 价值也随之而来。
-
这可是个可怕的副作用。
-
你并不总是“覆盖指针”,所以这里需要
ref。out不会编译。
标签: c# .net pass-by-reference pass-by-value