Pregunta

Tengo este fragmento

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

repetida de Norte, Sur y Este.

¿Cómo puedo declarar una función que me dejaran ir genero métodos como la programación?

por ejemplo., Me gustaría ser capaz de llamar

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

en lugar de definir el método, y después

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

Solución

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

(o ...)

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

Otros consejos

Me parece haber encontrado una solución:

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

Mi única preocupación sería hora de la unión; si es PlayerCharacter null cuando llamo GoMethod, ¿qué pasaría?

northButton.Click += (s,e) => GoMethod(Direction.North);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top