【发布时间】:2010-09-28 03:46:14
【问题描述】:
我正在创建一个函数,我需要在其中传递一个对象,以便该函数可以修改它。有什么区别:
public void myFunction(ref MyClass someClass)
和
public void myFunction(out MyClass someClass)
我应该使用哪个以及为什么?
【问题讨论】:
-
你:我需要传递一个对象以便它可以被修改看起来
MyClass将是一个class类型,即引用类型。在这种情况下,即使没有ref/out关键字,您传递的对象也可以被myFunction修改。myFunction将收到一个指向 same 对象的 new 引用,并且它可以根据需要修改同一个对象。ref关键字的不同之处在于,myFunction收到了对同一对象的 same 引用。仅当myFunction将引用更改为指向 另一个 对象时,这才是重要的。 -
当@AnthonyKolesov 的答案非常完美时,我对这里的大量令人困惑的答案感到困惑。
-
当您希望方法返回多个值时,声明一个 out 方法很有用。可以将一个参数分配给 null。这使方法能够有选择地返回值。
-
这里用Example解释一下更容易理解:)dotnet-tricks.com/Tutorial/csharp/…
-
@JeppeStigNielsen 的评论在技术上是对 OP 实际问题的(唯一)正确答案。要将对象传递给方法以便方法可以修改对象,只需将(对对象的引用)按值传递给方法。通过对象参数更改方法中的对象修改原始对象,即使该方法包含其自己的单独变量(引用同一对象)。
标签: c# reference keyword out ref