首页 >后端开发 >C++ >C# 修改对象的 ref 和 out 关键字有什么区别?

C# 修改对象的 ref 和 out 关键字有什么区别?

Susan Sarandon
Susan Sarandon原创
2025-01-24 12:01:09414浏览

What's the Difference Between C#'s `ref` and `out` Keywords for Modifying Objects?

C# refout 关键字:明显区别

在 C# 中,当方法需要修改作为参数传递的对象时,refout 关键字起着至关重要的作用。 虽然两者都可以进行修改,但它们的行为却有很大不同。

ref 关键字:修改现有对象

ref 关键字表示该方法直接对作为参数传递的原始对象进行操作,而不是副本。方法内的任何更改都会直接影响原始对象。重要的是,对象必须在传递给方法之前初始化。

out 关键字:创建和返回对象

相反,out关键字表示该方法负责初始化对象。该方法为该对象分配一个值,然后将这个新初始化的对象返回给调用者。 out 参数已声明,但在方法调用前不需要初始化。

选择正确的关键字

refout 之间的选择取决于方法的目的:

  • 使用ref修改现有对象;该方法不会创建新对象。
  • 使用out创建并返回一个新对象;该方法负责初始化。

示例:

<code class="language-csharp">public void ModifyWithRef(ref MyClass someClass)
{
    someClass.Property1 = 10;
}

public void CreateWithOut(out MyClass someClass)
{
    someClass = new MyClass { Property1 = 20 };
}</code>

ModifyWithRef 使用 someClass 修改现有的 refCreateWithOut 使用 someClass 创建并初始化 out。 请注意调用这些方法时初始化要求的差异。

以上是C# 修改对象的 ref 和 out 关键字有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn