描述.net的简写符号的含义?(“+ =”,“=>”)

时间:2014-01-12 10:36:38

标签: c# .net

第一个代码是第二个代码的简写:

itemCountLines.Click = itemCountLines.Click + (sender, args) => countLines();


itemCountLines.Click += (sender, args) => CountLines(); 

但我不明白这个表达是做什么的。任何人都请向我解释

3 个答案:

答案 0 :(得分:4)

此代码为Control.Click事件添加处理程序:

public event EventHandler Click

其中EventHandler是类型的委托:

public delegate void EventHandler(
    object sender,
    EventArgs e
)

通常,假设你有一个具有相同签名的方法:

void SomeClickHandler(object sender, EventArgs e)
{
   CountLines(); 
}

你会添加这个处理程序来处理Click事件:

itemCountLines.Click += SomeClickHandler;

运营商+=是可能的,因为Clickevent,因此您可以向其添加或删除多个EventHandler。简单来说,点击一些控件后,您可能想要进行多个操作(显示其他控件,将其记录到数据库等),这样您就可以添加多个事件处理程序。您甚至可以稍后在某个地方itemCountLines.Click -= SomeClickHandler说,您不想再使用Click来处理SomeClickHandler

但是上面的代码需要定义方法SomeClickHandler,这有时是不必要的(例如,它在整个类中只使用一个)。然后,您可以使用匿名委托(在C#2.0中添加):

itemCountLines.Click += delegate(object sender, EventArgs args)   
                  {   
                    CountLines(); 
                  };  

但您可以使用 lambda expression (在C#3.0中添加)进一步缩短此语法:

itemCountLines.Click += (sender, args) => CountLines(); 

答案 1 :(得分:0)

它只是向侦听器列表itemCountLines.Click = itemCountLines.Click + (sender, args)添加一个事件,因此当事件发生时,将通知发件人实例在内联=> countLines();时引发事件,因为您正在使用lambda Expression {{1} }将调用=>方法

答案 2 :(得分:0)

你只是在Click附加一个事件,它与说

相同
itemCountLines.Click += CountLines(sender, args);

在某个地方,应该有这样的方法:

private void CountLines()
{
    // Some Code There
}
相关问题