首頁 >後端開發 >C++ >c#`ref`與``of'':何時使用哪個關鍵字?

c#`ref`與``of'':何時使用哪個關鍵字?

Barbara Streisand
Barbara Streisand原創
2025-01-24 12:08:10277瀏覽

C# `ref` vs. `out`: When to Use Which Keyword?

C# 中 refout 關鍵字的差異與應用場景

在 C# 中,refout 關鍵字用於按引用傳遞對像到方法或函數。它們允許調用方直接在被調用方法中操作對象。

使用場景:

refout 都允許修改傳遞給方法的對象。關鍵區別在於它們的初始化要求:

ref

  • 調用方必須在將對像傳遞給方法之前初始化該對象。
  • 方法可以雙向訪問對象並修改其狀態。
  • 在方法中進行的任何更改都會反映在調用方的上下文中。

out

  • 調用方無需在調用方法之前初始化對象。
  • 方法在其主體內部初始化對象。
  • 方法只能單向訪問對象,並可以為其賦值。
  • 方法調用後,調用方會收到已初始化的對象。

選擇哪個關鍵字:

選擇 ref 的情況:

  • 對像在方法調用之前已初始化,並且需要修改。
  • 對象的原始狀態對於調用方很重要。

選擇 out 的情況:

  • 對象無需在方法調用之前初始化。
  • 方法應該創建一個新的對象並將其返回。
  • 對象的原始狀態對於調用方不需要。

示例:

考慮以下修改 MyClass 對象的 Count 屬性的方法:

<code class="language-csharp">public void IncrementCount(ref MyClass myClass)
{
    myClass.Count++;
}</code>

將預先初始化的 myClass 對像傳遞給此方法將導致其 Count 屬性被修改。另一方面,傳遞空或未初始化的對象將導致運行時錯誤。

在此場景中使用 out

<code class="language-csharp">public void CreateNewClass(out MyClass myClass)
{
    myClass = new MyClass();
}</code>

在這種情況下,該方法創建並為 myClass 參數分配一個新的 MyClass 實例。新的對象將返回給調用方,調用方在其本地上下文中擁有一個已初始化的對象。

以上是c#`ref`與``of'':何時使用哪個關鍵字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn