我正在学习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());
}
}
}
}
答案 0 :(得分:5)
由于logEvent将MessageDelegate
作为其事件处理程序,因此您需要lambda表达式(src, e)
的左侧与MessageDelegate
更改为(str, src, e) => OnLog(str, src, e)