0

静的/オブジェクトメソッド呼び出しとデリゲートメソッド呼び出しの違いは、ここで私の側から提供されたサンプルと言えますか?

class Program
{
    private delegate void TestDeleg1(string input1);
    static void Main(string[] args)
    {
        // Using delege & Lambda expression
        TestDeleg1 testDeleg1 = input => { var test = "Hai " + input; Console.WriteLine(test); };
        testDeleg1("Microsoft");

        // Using simple static method invoke
        TestImplementation("Microsoft");
        Console.ReadLine();
    }

    public static void TestImplementation(string input1)
    {
        var test = "Hai " + input1;
        Console.WriteLine(test);
    }
}

デリゲートメソッド呼び出しのリアルタイムの使用法が見つからなかったためです。

ありがとう、S.Venkatesh

4

2 に答える 2

4

あなたの例では..それらの使用法に違いはありません。ただし、アーキテクチャ的には、これらはまったく異なります。デリゲートはメソッドへの参照です。静的メソッドは..メソッドです。

デリゲートは、参照するメソッドを変更できます..ただし、メソッドは..メソッドです。

于 2012-08-07T05:57:53.510 に答える
1

デリゲートの有用性は、たとえばメソッドのパラメーターとして使用できるであるという事実からも生まれます。たとえば、宣言した場合

internal delegate bool PredicateOnInt32(int x);

thenPredicateOnInt32は一種の参照型であり、メソッドのパラメーターとして使用できます。

internal int GetFirstNumberWhere(PredicateOnInt32 pred)
{
  foreach (int num in this.numbers)
  {
    if (pred(num))
      return num;
  }
  throw new InvalidOperationException("No number satisfies the specified prediacte");
}

もちろん、これはほんの一例です。しかし、LINQ について考えてみると、特定のシグネチャと戻り値の型のメソッド (または複数のメソッド) を表す型を持つと便利であることがわかります。

デリゲートのもう 1 つの用途は、イベントが "発生" したときに呼び出されるメソッドのコレクションを保持するためにデリゲート インスタンスが舞台裏で使用されるイベントです。たとえば、ボタンがクリックされたとき。その後、さまざまな「サブスクライバー」が、イベントの add アクセサーを介して、独自のメソッドをデリゲートに追加できます。

于 2012-08-07T06:35:16.083 に答える