簡體   English   中英

在C#中返回函數

[英]Returning a function in C#

我有這個片段

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

對北部,南部和東部重復。

如何聲明一個可以讓我以編程方式生成方法的函數?

例如,我想可以打電話

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);
northButton.Click += (s,e) => GoMethod(Direction.North);

我似乎找到了解決方案:

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

我唯一關心的是綁定時間。 如果在我調用GoMethod時PlayerCharacter為null ,會發生什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM