答案 0 :(得分:1)
两者都向调用者指示该方法可以修改参数的值。必须在方法内初始化out
个参数,而ref
参数可能在外部初始化。这基本上是一份合同。当您看到一个采用out
参数的方法时,这意味着调用者可以在不初始化值的情况下调用它,并确保它将在内部初始化:
Foo foo;
SomeMethod(out foo);
// at this stage we know that foo will be initialized
而ref:
Foo foo;
SomeMethod(ref foo); // compile time error
在调用方法之前,调用者有责任初始化变量:
Foo foo = new Foo();
SomeMethod(ref foo); // ok
答案 1 :(得分:1)
来自here
out关键字导致参数通过引用传递。这是 类似于ref关键字,除了ref要求变量 在被传递之前被初始化。
某些方法(如Int32.TryParse()
)使用out参数,因此将一个单位化变量传递给它。