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

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

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 ответа

Решение
northButton.Click += (s, e) => GoMethod(Direction.North);

(или же...)

northButton.Click += (s, e) => PlayerCharacter.Go(Direction.North);
northButton.Click += (s,e) => GoMethod(Direction.North);

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

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

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

Другие вопросы по тегам