質問

私はこのスニペットを持っている。

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

北、南、東のために繰り返されます。

どのように私はプログラム的にIRのようなメソッドを発生させたい関数を宣言することができますか?

例えば、私が呼び出すことができるようにしたいと思います。

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

代わりの方法を定義して、

northButton.Click += new EventHandler(northButton.Click);
役に立ちましたか?

解決

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

(または...)

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

他のヒント

私は解決策を発見したように見えます

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

私の唯一の懸念は、結合時間程度でしょう。私はGoMethodを呼び出すときにプレイヤキャラクタがnullであれば、何が起こるのでしょうか?

northButton.Click += (s,e) => GoMethod(Direction.North);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top