共用方式為


HOW TO:組合委派 (多點傳送委派) (C# 程式設計手冊)

更新:2007 年 11 月

本範例示範如何組合多點傳送委派。delegate 物件具有的一種有用屬性,就是可使用 + 運算子,將這些物件指派給一個委派執行個體做為多點傳送。組合委派會呼叫組成它的兩個委派。而且只有相同型別的委派才能加以組合。

可以使用 - 運算子將某個元件委派從組合委派中移除。

範例

delegate void Del(string s);

class TestClass
{
    static void Hello(string s)
    {
        System.Console.WriteLine("  Hello, {0}!", s);
    }

    static void Goodbye(string s)
    {
        System.Console.WriteLine("  Goodbye, {0}!", s);
    }

    static void Main()
    {
        Del a, b, c, d;

        // Create the delegate object a that references 
        // the method Hello:
        a = Hello;

        // Create the delegate object b that references 
        // the method Goodbye:
        b = Goodbye;

        // The two delegates, a and b, are composed to form c: 
        c = a + b;

        // Remove a from the composed delegate, leaving d, 
        // which calls only the method Goodbye:
        d = c - a;

        System.Console.WriteLine("Invoking delegate a:");
        a("A");
        System.Console.WriteLine("Invoking delegate b:");
        b("B");
        System.Console.WriteLine("Invoking delegate c:");
        c("C");
        System.Console.WriteLine("Invoking delegate d:");
        d("D");
    }
}
/* Output:
Invoking delegate a:
  Hello, A!
Invoking delegate b:
  Goodbye, B!
Invoking delegate c:
  Hello, C!
  Goodbye, C!
Invoking delegate d:
  Goodbye, D!
*/

請參閱

概念

C# 程式設計手冊

參考

事件 (C# 程式設計手冊)

MulticastDelegate