Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态方法调用和委托方法调用之间有什么区别?_C# - Fatal编程技术网

C# 静态方法调用和委托方法调用之间有什么区别?

C# 静态方法调用和委托方法调用之间有什么区别?,c#,C#,有人能说出静态/对象方法调用与委托方法调用之间的区别吗?这里是我这边提供的示例 class Program { private delegate void TestDeleg1(string input1); static void Main(string[] args) { // Using delege & Lambda expression TestDeleg1 testDeleg1 = input => { var t

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

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

。。它们的用法没有区别。然而,在建筑上,它们是完全不同的。委托是对方法的引用。静态方法是。。一种方法


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

在您的示例中。。它们的用法没有区别。然而,在建筑上,它们是完全不同的。委托是对方法的引用。静态方法是。。一种方法


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

委托的有用性还来自于这样一个事实,即委托类型可以用作方法的参数。例如,如果您声明

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

委托的有用性还来自这样一个事实,即它们是可以用作方法参数的类型。例如,如果您声明

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访问器向委托添加他们自己的方法。

如果您找到了时间,请与实际使用情况分享差异如果您找到了时间,请与实际使用情况分享差异