C#Lambda表达式 - 帮助

时间:2009-11-15 17:37:22

标签: 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);
  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 个答案:

答案 0 :(得分:5)

由于logEvent将MessageDelegate作为其事件处理程序,因此您需要lambda表达式(src, e)的左侧与MessageDelegate

的签名匹配

更改为(str, src, e) => OnLog(str, src, e)