Правильное использование делегата Multicast в C # - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь учиться Multicast delegate на C #. Я написал следующую программу:

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 (которая не возвращает значение). Это правильно? Как правильно использовать этот дизайн / функцию?

РЕДАКТИРОВАТЬ : Также я прочитал, что делегат также возвращает экземпляр, что это значит? Если возможно, приведите небольшой пример.

...