C # Лямбда-выражение - PullRequest
       8

C # Лямбда-выражение

0 голосов
/ 15 ноября 2009

Я изучаю лямбда-выражения и делегаты. Когда я пытаюсь выполнить следующее, я получаю сообщение об ошибке в строке, которая отмечена жирной линией. ( Ошибка: оператор '+ =' нельзя применить к операндам типа «Test.MessageDelegate» и «лямбда-выражение» ). Помогите мне обработать лямбда-выражение.

namespace Test
{
    public delegate void MessageDelegate(string title,object sender,EventArgs e);
    class Program
    {
        static event MessageDelegate logEvent;

        static void Main(string[] args)
        {
            logEvent = new MessageDelegate(OnLog);
            logEvent("title",Program.logEvent,EventArgs.Empty);
logEvent + = (src, e) => {OnLog («Some», src, e); };
            Console.ReadKey(true);

        }

        static void OnLog(string title, object sender, EventArgs e)
        {
            if (logEvent != null)
            {
                Console.WriteLine("title={0}", title);
                Console.WriteLine("sender={0}", sender);
                Console.WriteLine("arguments={0}",e.GetType());
            }
        }
     }

 }

1 Ответ

5 голосов
/ 15 ноября 2009

Поскольку logEvent имеет MessageDelegate в качестве обработчика событий, вам потребуется левая рука лямбда-выражения (src, e), чтобы соответствовать сигнатуре MessageDelegate

Изменить на (str, src, e) => OnLog(str, src, e)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...