委托的目的是什么?委托的优势是什么?
本文关键字:是什么 | 更新日期: 2023-09-27 18:08:13
谁能给我解释一下为什么我们需要委托,委托的好处是什么?
下面是我创建的一个带委托和不带委托的简单程序(使用普通方法):
不带委托的程序:
namespace Delegates
{
class Program
{
static void Main(string[] args)
{
abc obj = new abc();
int a = obj.ss1(1, 2);
int b = obj.ss(3,4);
Console.WriteLine("the result of ss is {0} and the result of ss1 is {1}", a, b);
Console.ReadKey();
}
}
class abc
{
public int ss(int i, int j)
{
return i * j;
}
public int ss1(int x, int y)
{
return x + y;
}
}
}
带有委托的程序:
namespace Delegates
{
public delegate int my_delegate(int a, int b);
class Program
{
static void Main(string[] args)
{
my_delegate del = new my_delegate(abc.ss);
abc obj = new abc();
my_delegate del1 = new my_delegate(obj.ss1);
int a = del(4, 2);
int b = del1(4, 2);
Console.WriteLine("the result of ss is {0} and the result of ss1 is {1}", a, b);
Console.ReadKey();
}
}
class abc
{
public int ss(int i, int j)
{
return i * j;
}
public int ss1(int x, int y)
{
return x + y;
}
}
}
两个程序给出相同的结果,那么使用Delegates
的优势是什么?
谢谢。
委托被设计成以事件驱动的方式编程,这创建了一个更解耦的源代码。
通过委托,我们可以创建类似于发布者-订阅者模式的东西,其中订阅者可以注册以从发布者接收事件。
我们通常看到委托作为事件处理程序使用。例如,使用委托,我们可以通过在发生事件时调度事件(例如:click event,…)来创建可重用的控件,在这种情况下,控件是发布者,任何对处理此事件感兴趣的代码(订阅者)都将向控件注册处理程序。
这是委托的主要好处之一。
@LzyPanda在这篇文章中指出了更多的用法:什么时候在c#中使用委托?