Делегат и Событие: C #

У меня есть вопрос о событиях и делегатах в C #. Я видел во многих кодах, что они использовали event а также delegate Ключевое слово для создания триггера события. Давайте пропустим это сейчас, и меня больше всего волновали функции, которые вызвали событие, или, скорее, функции, которые были вызваны здесь, это фрагмент области действия.

public delegate void EventHandler();
class Program
{
//Note : Assigning the evet to the delegate
public static event EventHandler _show;

static void Main(string[] args)
{
_show += new EventHandler(Dog);
_show += new EventHandler(Cat);
_show.Invoke();
}

static void Dog() {
Console.WriteLine("Doggie");
}

static void Cat(){
Console.WriteLine("Pussy");
}

}

`

Как вы можете видеть, есть несколько функций, которые называются Dog / Cat. Там возвращаются типы void но когда вы выполняете это выглядит как string значение возвращается событию _show, Может кто-нибудь объяснить, что здесь происходит?

-3

Решение

Вы неправильно интерпретируете синтаксис.

static void Main(string[] args)
{
_show += new EventHandler(Dog);
_show += new EventHandler(Cat);
_show.Invoke();
}

_show += new EventHandler(Dog) просто поставит в очередь вызов функции Dog() , Таким образом, все равно что удерживать все вызовы функций в очереди, а затем выполнять их в порядке FIFO.

Вы ничего не возвращаете сюда. Только все ваши функции вызываются последовательно, а затем значения печатаются.

0

Другие решения

show Событие просто запустить Dog а потом беги Cat Методы. Очевидно, на нем будут печататься «Песик» и «Киска».

Если вы хотите вернуть строку:

static string Dog() {
// Console.WriteLine("Doggie");
return "Doggie";
}

и изменить delegate decalre:

public delegate string EventHandler();
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector