程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> c# 重載

c# 重載

編輯:C#基礎知識

定義

  成員的簽名包含成員的名稱和參數列表。每個成員簽名在類型中必須是唯一的。只要成員的參數列表不同,成員的名稱可以相同。如果類型的兩個或多個成員是同類成員(方法、屬性、構造函數等),它們具有相同的名稱和不同的參數列表,則稱該同類成員進行了重載。例如,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)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved