C# 描述.net的简写符号的含义(“";&x2B;=”和“";=”gt;”)
第一个代码是第二个代码的简写符号:C# 描述.net的简写符号的含义(“";&x2B;=”和“";=”gt;”),c#,.net,C#,.net,第一个代码是第二个代码的简写符号: itemCountLines.Click = itemCountLines.Click + (sender, args) => countLines(); itemCountLines.Click += (sender, args) => CountLines(); 但是我不明白这个表达式在做什么。任何人都请向我解释一下它。它只是将一个事件添加到侦听器列表中itemCountLines.Click=itemCountLines.Click+
itemCountLines.Click = itemCountLines.Click + (sender, args) => countLines();
itemCountLines.Click += (sender, args) => CountLines();
但是我不明白这个表达式在做什么。任何人都请向我解释一下它。它只是将一个事件添加到侦听器列表中
itemCountLines.Click=itemCountLines.Click+(sender,args)
,因此当事件发生时,会通知sender的实例内联引发事件=>countLines()
当您使用lambda表达式=>
时,它将调用countLines
方法它只需向侦听器列表添加一个事件itemCountLines.Click=itemCountLines.Click+(发送者,参数)
因此,当事件发生时,将通知发送方实例以内联方式引发事件=>countLines()
当您使用lambda表达式=>
时,它将调用countLines
方法此代码向事件添加一个处理程序:
其中,EventHandler
是以下类型的委托:
public delegate void EventHandler(
object sender,
EventArgs e
)
通常,如果您有一个具有相同签名的方法:
void SomeClickHandler(object sender, EventArgs e)
{
CountLines();
}
您将添加此处理程序来处理单击事件:
itemCountLines.Click += SomeClickHandler;
运算符+=
是可能的,因为单击
是一个事件
,所以您可以向它添加或删除多个事件处理程序。简单地说,单击某个控件后,可能需要执行多个操作(显示其他控件、将其记录到数据库等),以便能够添加多个事件处理程序。您甚至可以在以后的某个地方执行itemCountLines.Click-=SomeClickHandler
,也就是说,您不想再使用SomeClickHandler
处理Click
但上面的代码需要定义方法SomeClickHandler
,这有时是不必要的(例如,整个类中只使用一个方法)。然后可以使用匿名委托(在C#2.0中添加):
但是,您可以使用lambda表达式(在C#3.0中添加)将此语法进一步缩短为:
此代码向事件添加处理程序:
其中,EventHandler
是以下类型的委托:
public delegate void EventHandler(
object sender,
EventArgs e
)
通常,如果您有一个具有相同签名的方法:
void SomeClickHandler(object sender, EventArgs e)
{
CountLines();
}
您将添加此处理程序来处理单击事件:
itemCountLines.Click += SomeClickHandler;
运算符+=
是可能的,因为单击
是一个事件
,所以您可以向它添加或删除多个事件处理程序。简单地说,单击某个控件后,可能需要执行多个操作(显示其他控件、将其记录到数据库等),以便能够添加多个事件处理程序。您甚至可以在以后的某个地方执行itemCountLines.Click-=SomeClickHandler
,也就是说,您不想再使用SomeClickHandler
处理Click
但上面的代码需要定义方法SomeClickHandler
,这有时是不必要的(例如,整个类中只使用一个方法)。然后可以使用匿名委托(在C#2.0中添加):
但是,您可以使用lambda表达式(在C#3.0中添加)将此语法进一步缩短为:
您只是在单击时附加一个事件,这与
itemCountLines.Click += CountLines(sender, args);
在某个地方,应该有这样一种方法:
private void CountLines()
{
// Some Code There
}
您只是在单击时附加一个事件,这与
itemCountLines.Click += CountLines(sender, args);
在某个地方,应该有这样一种方法:
private void CountLines()
{
// Some Code There
}
查找匿名方法和lambda表达式。查找匿名方法和lambda表达式。“+=”是什么意思?我们正在向itemcountlines.click.添加一些ClickHandler。这没有意义。这非常有意义Click
是event
,它可以向其中添加和删除EventHandler
s。因此,我们添加此处理程序(sender,args)来单击事件以了解sender和argumnets,然后调用countLines函数,对吗?谢谢,这是最后一个问题。这篇文章我正在阅读。查找函数名CountLines()。他使用的值(如“SelectEdits”)是通过(sender或arg)?@user3187056来的,我相信它来自基类SharpContextMenu
。事件处理程序,即使是匿名的,也可以访问正在声明的类的字段。“+=”是什么意思?我们正在向itemcountlines.click.添加一些ClickHandler。这没有意义。这非常有意义Click
是event
,它可以向其中添加和删除EventHandler
s。因此,我们添加此处理程序(sender,args)来单击事件以了解sender和argumnets,然后调用countLines函数,对吗?谢谢,这是最后一个问题。这篇文章我正在阅读。查找函数名CountLines()。他使用的值(如“SelectEdits”)是通过(sender或arg)?@user3187056来的,我相信它来自基类SharpContextMenu
。事件处理程序,即使是匿名的,也可以访问正在声明的类的字段。