Возврат функции в C # - PullRequest
       46

Возврат функции в C #

0 голосов
/ 08 августа 2009

У меня есть этот фрагмент

private void westButton_click(object sender, EventArgs ea)
{
    PlayerCharacter.Go(Direction.West);
}

повторяется для севера, юга и востока.

Как я могу объявить функцию, которая позволила бы мне генерировать такие методы, как ir программно?

например, я бы хотел позвонить

northButton.Click += GoMethod(Direction.North);

вместо определения метода, а затем

northButton.Click += new EventHandler(northButton.Click);

Ответы [ 3 ]

4 голосов
/ 08 августа 2009
northButton.Click += (s, e) => GoMethod(Direction.North);

(или ...)

northButton.Click += (s, e) => PlayerCharacter.Go(Direction.North);
0 голосов
/ 08 августа 2009

Кажется, я нашел решение:

private EventHandler GoMethod(Direction dir)
{
    return new EventHandler((object sender, EventArgs ea) => PlayerCharacter.Go(dir));
}

Моя единственная забота была бы о времени связывания; что если произойдет PlayerCharacter null при вызове GoMethod, что произойдет?

0 голосов
/ 08 августа 2009
northButton.Click += (s,e) => GoMethod(Direction.North);
...