سؤال

لدي هذا القصاص

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top