1. 程式人生 > >C#方法簽名

C#方法簽名

知新樹 寧金峰


網上有人說方法簽名包含方法返回類型,也有人說不包含。到底什麽是方法簽名呢?

Visual C# 2010在線幫助,方法(C# 編程指南)是這樣說的:

方法簽名

通過指定方法的訪問級別(例如 public 或private)、可選修飾符(例如abstract 或sealed)、返回值、名稱和任何方法參數,可以在 結構中聲明方法。

這些部分統稱為方法的“簽名”。

為進行方法重載,方法的返回類型不是方法簽名的一部分。

但是,在確定委托和委托所指向方法之間的兼容性時,返回類型是方法簽名的一部分。

Visual C# 2010在線幫助,委托(C# 編程指南)是這樣說的:

委托是一種定義方法簽名的類型。

當實例化委托時,您可以將其實例與任何具有兼容簽名(註:這裏所說的簽名包含返回類型)的方法相關聯。

您可以通過委托實例調用方法。

委托用於將方法作為參數傳遞給其他方法。

事件處理程序就是通過委托調用的方法。

在方法重載的上下文中,方法的簽名不包括返回值。

但在委托的上下文中,簽名的確包括返回值。

換句話說,方法和委托必須具有相同的返回值。

例:

class Program
{
static void Main(string[] args)
{

// Instantiate the delegate.
Del handler1 = new Del(DelegateMethod1);

Del handler2 = new Del(DelegateMethod2); //error,方法的返回類型與委托的返回類型不一致



// Call the delegate.

handler1("Hello World");
handler2("Hello World");

Console.ReadKey();


}

// Create a method for a delegate.

public static void DelegateMethod1(string message)
{
System.Console.WriteLine(message);
}

public static string DelegateMethod2(string message)
{
System.Console.WriteLine(message);
return "ok";
}

public delegate void Del(string message);

}

也有人這樣描述:

C#中,方法、實例構造函數、索引器和運算符是由它們的簽名來刻畫的:

· 方法簽名由方法的名稱和它的每一個形參(按從左到右的順序)的類型和種類(值、引用或輸出)組成。需註意的是,方法簽名既不包含返回類型,也不包含 params修飾符(它可用於最右邊的參數)。

· 實例構造函數簽名由它的每一個形參(按從左到右的順序)的類型和種類(值、引用或輸出)組成。具體說來,實例構造函數的簽名不包含可為最右邊的參數指定的 params修飾符。

· 索引器簽名由它的每一個形參(按從左到右的順序)的類型組成。具體說來,索引器的簽名不包含元素類型。

· 運算符簽名由運算符的名稱和它的每一個形參(按從左到右的順序)的類型組成。具體說來,運算符的簽名不包含結果類型。

簽名是對類、結構和接口的成員實施重載的機制:

· 方法重載允許類、結構或接口用同一個名稱聲明多個方法,條件是它們的簽名在該類、結構或接口中是唯一的。

· 實例構造函數重載允許類或結構聲明多個實例構造函數,條件是它們的簽名在該類或結構中是唯一的。

· 索引器重載允許類、結構或接口聲明多個索引器,條件是它們的簽名在該類、結構或接口中是唯一的。

· 運算符重載允許類或結構用同一名稱聲明多個運算符,條件是它們的簽名在該類或結構中是唯一的。

擴展:對象擁有自己的值(C#中的字段),而類可以描述同族對象的操作和屬性。類的操作是一個過程或者函數,而方法就是類操作的具體實現。操作的名字就是方法簽名。


本文出自 “13233523” 博客,請務必保留此出處http://13243523.blog.51cto.com/13233523/1983777

C#方法簽名