Pergunta

Eu tenho esse trecho

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

repetido para Norte, Sul e Leste.

Como posso declarar uma função que me deixasse gerar métodos como ir de programação?

por exemplo., Eu gostaria de ser capaz de chamar

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

em vez de definir o método, e, em seguida,

northButton.Click += new EventHandler(northButton.Click);
Foi útil?

Solução

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

(ou ...)

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

Outras dicas

I parecem ter encontrado uma solução:

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

A minha única preocupação seria de cerca de tempo de ligação; se PlayerCharacter é null quando eu chamo GoMethod, o que aconteceria?

northButton.Click += (s,e) => GoMethod(Direction.North);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top