静态方法调用与委托方法调用之间的区别是什么
本文关键字:调用 区别 是什么 之间 静态方法 方法 | 更新日期: 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访问器将自己的方法添加到委托中。