委托的目的是什么?委托的优势是什么?

本文关键字:是什么 | 更新日期: 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#中使用委托?