C# 重載

來源:互聯網
上載者:User

標籤:http   使用   os   strong   ar   代碼   line   ad   

定義

  成員的簽名包含成員的名稱和參數列表。每個成員簽名在類型中必須是唯一的。只要成員的參數列表不同,成員的名稱可以相同。如果類型的兩個或多個成員是同類成員(方法、屬性、建構函式等),它們具有相同的名稱和不同的參數列表,則稱該同類成員進行了重載。例如,Array 類包含兩個 CopyTo 方法。第一個方法採用一個數組和一個Int32 值,第二個方法採用一個數組和一個 Int64 值。

 

在設計重載方法的時候應該注意一下事項

1  避免隨意更改重載中的參數名稱。如果某個重載的一個參數與另一個重載的一個參數表示相同的輸入,則這兩個參數應具有同樣的名稱。

  例如,不要執行下面的操作:

  public void Write(string message, FileStream stream){}
  public void Write(string line, FileStream file, bool closeStream){}

這些重載的正確定義如下所示

public void Write(string message, FileStream stream){}
public void Write(string message, FileStream stream, bool closeStream){}

 

保持重載成員參數的順序一致性。在所有重載中,同名參數的位置應該相同。

例如,不要執行下面的操作:

public void Write(string message, FileStream stream){}
public void Write(FileStream stream,  string message, bool closeStream){}

這些重載的正確定義如下所示:

public void Write(string message, FileStream stream){}
public void Write(string message, FileStream stream, bool closeStream){}

 

以上兩種寫法結構清晰,增強代碼的可讀性,更加適合規範。

此準則有兩項約束:

  • 如果重載採用變數參數列表,則該列表必須是最後一個參數。

  • 如果重載採用 out 參數,按照約定,這類參數應作為最後的參數

如果需要具有擴充性,將最長的重載作為虛重載。較短的重載只應逐步調用較長的重載。

下面的程式碼範例對此進行了示範。

public void Write(string message, FileStream stream)
{
    this.Write(message, stream, false);
}
public virtual void Write(string message, FileStream stream, bool closeStream)
{
    // Do work here.
}

此寫法減少多餘的代碼,利於維護。

不要對重載成員使用 ref 或 out 修飾符。

public void Write(string message, int count)

...public void Write(string message, out int count)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.