Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 描述.net的简写符号的含义(“";&x2B;=”和“";=”gt;”)_C#_.net - Fatal编程技术网

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
。事件处理程序,即使是匿名的,也可以访问正在声明的类的字段。