C#中的Out type Vs Ref类型参数有什么区别?

时间:2012-02-16 13:03:46

标签: c#

  

可能重复:
  Difference between ref and out parameters in .NET

C#.net?

中的Out类型和Ref类型参数有何不同


什么时候可以使用?

2 个答案:

答案 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参数,因此将一个单位化变量传递给它。