سؤال
لدي هذا القصاص
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);
نصائح أخرى
يبدو أنني قد وجدت حلا:
private EventHandler GoMethod(Direction dir)
{
return new EventHandler((object sender, EventArgs ea) => PlayerCharacter.Go(dir));
}
قلقي الوحيد سيكون حول وقت الربط؛ إذا كان اللاعب شحما null
عندما أسمي Gomethod، ماذا سيحدث؟
northButton.Click += (s,e) => GoMethod(Direction.North);
لا تنتمي إلى StackOverflow