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中文網其他相關文章!