【发布时间】:2012-02-16 13:03:45
【问题描述】:
C#.net 中 Out 类型和 Ref 类型参数有什么区别?
什么时候可以在什么情况下使用?
【问题讨论】:
标签: c#
C#.net 中 Out 类型和 Ref 类型参数有什么区别?
什么时候可以在什么情况下使用?
【问题讨论】:
标签: c#
两者都向调用者表明该方法可以修改参数的值。 out 参数必须在方法内部初始化,而 ref 参数可能在外部初始化。这基本上是一份合同。当你看到一个带有 out 参数的方法时,这意味着调用者可以在不初始化值的情况下调用它,并确保它会在内部被初始化:
Foo foo;
SomeMethod(out foo);
// at this stage we know that foo will be initialized
而参考:
Foo foo;
SomeMethod(ref foo); // compile time error
在调用方法之前初始化变量是调用者的责任:
Foo foo = new Foo();
SomeMethod(ref foo); // ok
【讨论】:
引用here
out 关键字导致参数通过引用传递。这是 类似于 ref 关键字,除了 ref 要求变量 在通过之前被初始化。
有些方法,比如Int32.TryParse() 使用一个输出参数,所以需要将一个未初始化的变量传递给它。
【讨论】: