1

イベントの説明とmsdnの例を読むと、イベントのサブスクライブ方法に矛盾があることがわかります。イベントハンドラーは「そのまま」渡される場合もあれば、ハンドラーメソッドを使用してデリゲートをインスタンス化して渡される場合もあります。

...
class Subscriber
    {
        private string id;
        public Subscriber(string ID, Publisher pub)
        {
            id = ID;
            // Subscribe to the event using C# 2.0 syntax
            pub.RaiseCustomEvent += HandleCustomEvent;
        }

        // Define what actions to take when the event is raised. 
        void HandleCustomEvent(object sender, CustomEventArgs e)
        {
            Console.WriteLine(id + " received this message: {0}", e.Message);
        }
    } 

public delegate void EventHandler1(int i);
...
public class TestClass
{
    public static void Delegate1Method(int i)
    {
        System.Console.WriteLine(i);
    }

    public static void Delegate2Method(string s)
    {
        System.Console.WriteLine(s);
    }
    static void Main()
    {
        PropertyEventsSample p = new PropertyEventsSample();

        p.Event1 += new EventHandler1(TestClass.Delegate1Method);
        p.RaiseEvent1(2);
       ...
     }
}

誰かがこれについて明確に説明してもらえますか?

ありがとう。

4

1 に答える 1

5

最初のコード サンプルは、2 番目のサンプルのシンタックス シュガーです。
この構文 (コンストラクターを省略) は C# 2 で導入されました。

于 2012-10-15T23:22:49.013 に答える