首页 >后端开发 >C++ >值与参考:C#如何将对象传递给方法?

值与参考:C#如何将对象传递给方法?

Barbara Streisand
Barbara Streisand原创
2025-01-31 00:46:09656浏览

Value vs. Reference: How Does C# Pass Objects to Methods?

C# 方法参数传递:值类型与引用类型

C# 中,非原始类型变量以引用方式传递的行为已被广泛接受。然而,在处理 System.Drawing.Image 等对象时,一些开发者可能会遇到差异。理解对象传递的细微之处对于避免意外结果至关重要。

默认情况下,对象并非直接传递给方法。而是对其相应的值进行评估,并将初始参数值作为参数传递。对于引用类型(非原始类型),该值表示对实际对象或 null 的引用。因此,在方法内部对对象进行的任何修改都对调用者可见。

但是,需要注意的是,将参数的值更改为指向另一个不同对象,在使用按值传递(默认行为)时,不会反映在调用者的作用域中。

要实现按引用传递语义,必须使用 outref 关键字,而不管参数类型是什么。通过指定这些关键字,参数本身将按引用传递,确保对参数的更改对调用者可见。

以下是一个简化的示例:

<code class="language-csharp">public void Foo(Image image) // 按值传递
{
    // 对参数的更改对调用者不可见。
    image = Image.FromStream(...);
}

public void Foo(ref Image image) // 按引用传递
{
    // 对参数的更改对调用者可见。
    image = Image.FromStream(...);
}</code>

相反,在按值传递对象时,对引用对象内数据所做的修改将对调用者可见。

有关此主题的更全面解释,请参阅提供的答案中链接的详细文章。

以上是值与参考:C#如何将对象传递给方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

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