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,您就会明白,拥有一个表示特定签名和返回类型的方法(或多个方法)的类型会很有用。

委托的另一种用途是在事件中使用委托实例在场景后面保存要在事件“发生”时调用的方法集合。例如,当单击按钮时。然后,不同的“订阅者”可以通过事件的 add 访问器将自己的方法添加到委托。

于 2012-08-07T06:35:16.083 回答