协慌网

登录 贡献 社区

'ref' 和'out' 关键字之间有什么区别?

我正在创建一个函数,我需要传递一个对象,以便它可以被函数修改。有什么区别:

public void myFunction(ref MyClass someClass)

public void myFunction(out MyClass someClass)

我应该使用哪个以及为什么?

答案

ref告诉编译器在进入函数之前初始化对象,而out告诉编译器该对象将在函数内初始化。

因此,虽然ref是双向的,但out是 out-only。

ref修饰符意味着:

  1. 该值已设置
  2. 该方法可以读取和修改它。

out修饰符意味着:

  1. 该值未设置,并且在设置之前无法通过该方法读取。
  2. 该方法必须在返回之前设置它。

让我们说 Dom 在 Peter 的小隔间里出现关于 TPS 报告的备忘录。

如果 Dom 是一个参考论证,他会有一份备忘录的印刷版。

如果 Dom 是一个争吵,他会让彼得打印一份备忘录的新副本供他随身携带。