C#方法簽名

來源:互聯網
上載者:User

標籤:知新樹 寧金峰


網上有人說方法簽名包含方法傳回型別,也有人說不包含。到底什麼是方法簽名呢?

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#方法簽名

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.