“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)); } } }
答
这通常被称为“内联事件”,并且是在运行特定的代码OnSpeak
事件触发时的另一种方式。
x.OnSpeak += (s, e) => Console.WriteLine("On Speak!");
的s
是sender
,和e
是事件参数。
你可以重写你这样的代码,这可能是更熟悉的前瞻性:
x.OnSpeak += OnSpeakEvent;
private static void OnSpeakEvent(object s, CancelEventArgs e)
{
Console.WriteLine("On Speak!");
}
它不再是含糊不清,我就接受了几分钟后,回答 – Kinani 2014-12-27 14:10:16
这是一个['匿名Method'] (http://msdn.microsoft.com/en-us/library/0yw3tz5k.aspx)声明。 – Avijit 2014-12-27 14:10:31
'(s,e)=> Console.WriteLine(“在说话!”)是一个lambda。您可能需要阅读C#中的lambda表达式。 – 2014-12-27 14:10:43