C# 中數組和列表:按引用傳遞還是按值傳遞?
在 C# 中,陣列和列表採用按值傳遞的方式。這意味著當您將這些資料結構作為參數傳遞給方法或函數時,只傳遞對它們的參考的副本。
以數值傳遞:
在 .NET 中,陣列和列表是儲存在堆上的物件。當這些物件作為參數傳遞時,會複製它們在記憶體中位置的參考。這表示對陣列或清單內容所做的任何變更都可被呼叫方觀察到。但是,如果您重新指派數組或清單本身(即變更引用),則呼叫方將無法偵測到這些變更。
範例:
<code class="language-c#">void Foo(int[] data) { data[0] = 1; // 调用方可以看到此更改 } void Bar(int[] data) { data = new int[20]; // 调用方看不到此更改 }</code>
使用 ref 進行按引用傳遞:
如果您需要呼叫方同時觀察內容變更和參考重新分配,則可以使用 ref 修飾符。這將按引用傳遞引用,確保對引用本身所做的任何修改都對呼叫方可見。
使用 ref 的範例:
<code class="language-c#">void Foo(ref int[] data) { data[0] = 1; // 调用方可以看到此更改 data = new int[20]; // 调用方也可以看到此更改 }</code>
因此,在 C# 中,陣列和清單預設會按值傳遞。如果您希望按引用傳遞參考本身,可以修改方法的簽名以包含 ref 修飾符。
以上是C# 陣列和列表是按值傳遞還是按引用傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!