.NET中ref和out参数之间的区别

.NET中ref和out参数之间的区别

.NET中的参数refout参数有什么区别?一个人比另一个人更有用的情况是什么?什么是一个可以使用而另一个不能使用的代码片段?



明月笑刀无情
浏览 1308回答 3
3回答

慕勒3428872

它们几乎是一样的 - 唯一的区别是你作为out参数传递的变量不需要初始化,但是将它作为ref参数传递它必须设置为某个东西。int x;Foo(out x); // OKint y;Foo(ref y); // Error: y should be initialized before calling the methodRef参数用于可能被修改out的数据,参数用于数据,该数据int.TryParse是已经使用某些东西的返回值的函数(例如)的附加输出。

BIG阳

为什么C#同时具有'ref'和'out'?取出参数的方法的调用者不需要分配给在调用之前作为out参数传递的变量; 但是,被调用者需要在返回之前分配out参数。相比之下,ref参数被认为最初由呼叫者分配。因此,被调用者在使用之前不需要分配给ref参数。Ref参数传入和传出方法。所以,out意味着,而ref不是进出。这些与COM接口的参数[out]和[in,out]参数紧密对应,参数的优点是,在out被调用的方法不需要的情况下,调用者不需要传递预先分配的对象 - 这既避免了分配成本,又避免了任何成本可能与编组有关(更可能与COM有关,但在.NET中并不罕见)。
打开App,查看更多内容
随时随地看视频慕课网APP