C# 中引用类型变量的“ref”的意义
C# 程序员在使用引用时经常遇到“ref”关键字-类型变量,例如类。虽然“ref”与值类型的行为众所周知,但其引用类型的用途可能不太清楚。
背景
传递值时-按值类型,不带“ref”关键字,创建变量的副本并将其传递给方法。但是,对于引用类型,在不使用“ref”的情况下传递它们已经涉及引用变量本身。
在引用类型中使用“ref”
那么,什么是将“ref”与引用类型一起使用的好处是什么?主要区别在于重新分配变量引用的能力。
示例
考虑以下示例:
var x = new Foo(); // Without "ref" void Bar(Foo y) { y.Name = "2"; } // With "ref" void Bar(ref Foo y) { y.Name = "2"; } // Test Bar(x);
在第一种情况下, y 是对 x 的引用,修改 y.Name 会更新对象。然而,第二种情况,利用“ref”,允许我们做一些独特的事情。
在带有“ref”的 Bar 方法内,我们可以重新分配 y 指向的引用。例如:
Foo foo = new Foo("1"); // Reassign reference via "ref" void Bar(ref Foo y) { y = new Foo("2"); } Bar(ref foo); // After Bar() call Console.WriteLine(foo.Name);
这里,对 Bar(ref foo) 的调用有效地将一个新的 Foo 实例分配给 foo。这意味着原始 foo 变量现在指向名为“2”的不同对象。
结论
因此,具有引用类型的“ref”提供了可以灵活地重新分配对象引用,从而实现其他方式无法实现的高级场景。
以上是何时以及为何在 C# 中对引用类型使用'ref”?的详细内容。更多信息请关注PHP中文网其他相关文章!