C#Lambda表达式 - 帮助

use*_*546 0 c# lambda

我正在学习lambda表达式和委托.虽然我尝试执行以下操作,但我在标记为粗线的行处收到错误.(错误:运算符'+ ='不能应用于'Test.MessageDelegate'和'lambda expression'类型的操作数.)帮我处理lambda表达式.

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);
Run Code Online (Sandbox Code Playgroud) 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());
            }
        }
     }

 }
Run Code Online (Sandbox Code Playgroud)

Dav*_*und 5

由于logEvent具有MessageDelegate事件处理程序,因此您需要lambda表达式的左手(src, e)来匹配签名MessageDelegate

改成 (str, src, e) => OnLog(str, src, e)