5

デリゲートについて勉強中です。私が読んだように。デリゲートに複数の関数を追加することをマルチキャスト デリゲートと呼びます。それをもとにプログラムを書きました。ここでは、MyDelegate に追加した 2 つの関数 (AddNumbers と MultiplyNumbers) を示します。以下のプログラムは、マルチキャスト デリゲートの例ですか?

public partial class MainPage : PhoneApplicationPage
{
    public delegate void MyDelegate(int a, int b);
    // Constructor
    public MainPage()
    {
        InitializeComponent();

        MyDelegate myDel = new MyDelegate(AddNumbers);
        myDel += new MyDelegate(MultiplyNumbers);
        myDel(10, 20);
    }

    public void AddNumbers(int x, int y)
    {
        int sum = x + y;
        MessageBox.Show(sum.ToString());
    }

    public void MultiplyNumbers(int x, int y)
    {
        int mul = x * y;
        MessageBox.Show(mul.ToString());
    }

}
4

3 に答える 3

9

はい、これはマルチキャスト デリゲートの例です。代わりに

new MyDelegate(AddNumbers)

あなたは通常、ただ言うことができます

AddNumbers

デリゲート インスタンスを作成する、いわゆるメソッド グループ変換が存在するためです。

注意すべきもう 1 つの点は、宣言が別の型 (ここではクラス内)内に存在する必要public delegate void MyDelegate(int a, int b);がないことです。MainPage名前空間の直接のメンバーである可能性があります (型であるため)。しかしもちろん、ネストされたクラスを作成する理由と同様の理由で、クラス内で「ネスト」することは完全に有効です。

于 2013-02-22T12:03:11.407 に答える