“x.OnSpeak + =(s,e)”是什么意思?

“x.OnSpeak + =(s,e)”是什么意思?

问题描述:

  • 我知道这是事件参数的“e”,但这里的“s”是什么意思,“+ =(,)=>”是什么意思?
  • 是否有其他替代实现?“x.OnSpeak + =(s,e)”是什么意思?

    class Program 
    { 
    static void Main(string[] args) 
        { 
        var x = new Animal(); 
        x.OnSpeak += (s, e) => Console.WriteLine("On Speak!"); 
        x.OnSpeak += (s, e) => Console.WriteLine(e.Cancel ? "Cancel" : "Do not cancel"); 
    
        Console.WriteLine("Before"); 
        Console.WriteLine(string.Empty); 
    
        x.Speak(true); 
        x.Speak(false); 
    
        Console.WriteLine(string.Empty); 
        Console.WriteLine("After"); 
    
        Console.Read(); 
        } 
    
    public class Animal 
    { 
        public event CancelEventHandler OnSpeak; 
        public void Speak(bool cancel) 
        { 
        OnSpeak(this, new CancelEventArgs(cancel)); 
        } 
    } 
    } 
    
+0

它不再是含糊不清,我就接受了几分钟后,回答 – Kinani 2014-12-27 14:10:16

+1

这是一个['匿名Method'] (http://msdn.microsoft.com/en-us/library/0yw3tz5k.aspx)声明。 – Avijit 2014-12-27 14:10:31

+2

'(s,e)=> Console.WriteLine(“在说话!”)是一个lambda。您可能需要阅读C#中的lambda表达式。 – 2014-12-27 14:10:43

这通常被称为“内联事件”,并且是在运行特定的代码OnSpeak事件触发时的另一种方式。

x.OnSpeak += (s, e) => Console.WriteLine("On Speak!"); 

ssender,和e是事件参数。

你可以重写你这样的代码,这可能是更熟悉的前瞻性:

x.OnSpeak += OnSpeakEvent; 

private static void OnSpeakEvent(object s, CancelEventArgs e) 
{ 
    Console.WriteLine("On Speak!"); 
}