静态方法调用与委托方法调用之间的区别是什么

本文关键字:调用 区别 是什么 之间 静态方法 方法 | 更新日期: 2024-10-22 02:08:56

有人能说出静态/对象方法调用与委托方法调用之间的区别吗?这里是我端提供的示例。

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.文卡特什

静态方法调用与委托方法调用之间的区别是什么

在您的示例中。。它们的用法没有区别。然而,在架构上,它们却大不相同。委托是对方法的引用。静态方法是一种方法。

学员可以更改他们引用的方法。。然而,一种方法就是。。一种方法。

委托的有用性还来自于它们是类型,例如可以用作方法的参数。例如,如果您申报

internal delegate bool PredicateOnInt32(int x);

那么PredicateOnInt32是一种引用类型,您可以将其用作方法中的参数,如

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访问器将自己的方法添加到委托中。