首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 委派基礎與多點廣播委派實作 (1)

     編輯:關於C語言

委派是 C# 中較複雜的概念,類似 C/C++ 的函式指標,可將方法參考封裝後透過委派物件呼叫。其特性在於不需知道被參考方法屬於哪個類別物件,只要參數個數與回傳型別與委派一致即可。

基本委派範例

// 定義回傳 string、無參數的委派
delegate string MyDelegate();

public class MyClass
{
    public string SayHello() { return "Hello the world!"; }
}

public class TestMyClass
{
    public static void Main(string[] args)
    {
        MyClass myClass1 = new MyClass();
        MyDelegate myDelegate1 = new MyDelegate(myClass1.SayHello);
        // 使用委派呼叫方法
        System.Console.WriteLine(myDelegate1()); // 輸出: Hello the world!
    }
}

多點廣播委派

委派可使用 + 組合、- 移除,形成多點廣播委派:

delegate void MyDelegate(string s);

public class MyClass
{
    public void SayHello(string who) { System.Console.WriteLine(who + " hello!"); }
    public void SayGoodBye(string who) { System.Console.WriteLine(who + " good bye!"); }
}

public class TestMyClass
{
    public static void Main(string[] args)
    {
        MyClass myClass1 = new MyClass();
        MyDelegate myDelegate = new MyDelegate(myClass1.SayHello);
        MyDelegate myDelegate1 = new MyDelegate(myClass1.SayGoodBye);
        myDelegate += myDelegate1; // 組合
        myDelegate("love.Net ");   // 同時呼叫兩個方法
        // 輸出: love.Net hello! love.Net good bye!
    }
}

多點廣播委派是事件機制的基礎,允許一個事件通知多個訂閱者。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved