在C#中正确使用多播委托

时间:2019-07-03 10:39:04

标签: c# delegates multicastdelegate

我正在尝试使用C#学习Multicast delegate。我编写了以下程序:

using System;

public static class Program {
    delegate int Calc(int x, int y);

    static int Add(int a, int b) {
        Console.WriteLine("Add");
        return a + b;
    }

    static int Sub(int a, int b) {
        Console.WriteLine("Sub");
        return a - b;
    }
    public static void Main(string [] args) {
        Calc c;
        c = new Calc(Add);
        c += new Calc(Sub);
        Console.WriteLine("#######");
        int result = c(4, 6);
        Console.WriteLine(result);
    }
}

输出为:

#######
Add
Sub
-2

我似乎无法理解Multicast delegate有什么好处,当我们调用c(4, 6)时,它确实进入了Add函数,但它对返回的值不做任何事(是10),而是仅打印消息并移至第二个功能。仅当我们谈论Multicast delegate函数(不返回值)时,我才能看到void的使用。这是对的吗?使用此设计/功能的正确方法是什么?

EDIT :另外,我还读到委托还返回一个实例,这是什么意思?如有可能,请提供一个小例子。

0 个答案:

没有答案