Tornando una funzione in C #
-
12-09-2019 - |
Domanda
Ho questo frammento
private void westButton_click(object sender, EventArgs ea)
{
PlayerCharacter.Go(Direction.West);
}
ripetuto per il Nord, Sud ed Est.
Come posso dichiarare una funzione che mi lasciassi generare metodi come ir di programmazione?
per es., Mi piacerebbe essere in grado di chiamare
northButton.Click += GoMethod(Direction.North);
invece di definire il metodo, e quindi
northButton.Click += new EventHandler(northButton.Click);
Soluzione
northButton.Click += (s, e) => GoMethod(Direction.North);
(o ...)
northButton.Click += (s, e) => PlayerCharacter.Go(Direction.North);
Altri suggerimenti
mi sembra di aver trovato una soluzione:
private EventHandler GoMethod(Direction dir)
{
return new EventHandler((object sender, EventArgs ea) => PlayerCharacter.Go(dir));
}
La mia unica preoccupazione sarebbe ora vincolante; se PlayerCharacter è null
quando chiamo GoMethod, che cosa accadrebbe?
northButton.Click += (s,e) => GoMethod(Direction.North);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow