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);
È stato utile?

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
scroll top