0
使用EventHandler並僅定義事件的功能是否存在差異?什麼時候/爲什麼要使用EventHandler而不是常規事件?
使用EventHandler並僅定義事件的功能是否存在差異?什麼時候/爲什麼要使用EventHandler而不是常規事件?
這是兩個不同的東西
event
聲明事件:
https://msdn.microsoft.com/en-us/library/8627sbea.aspx
EventHandler
定義的事件將提高方法:
https://msdn.microsoft.com/en-us/library/system.eventhandler(v=vs.110).aspx
EventHandler<TEventArgs>
是您的自定義EventArgs
一個方便的包裝:
https://msdn.microsoft.com/en-us/library/db0etb8x(v=vs.110).aspx
不同的方式來訂閱事件
using System;
namespace ConsoleApplication3
{
internal class Program
{
private static void Main(string[] args)
{
// using a method
MyEvent += Program_MyEvent;
// using EventHandler, possible but not mandatory
MyEvent += new EventHandler(Target);
// using lambda syntax
MyEvent += (sender, eventArgs) => { };
// using delegate
MyEvent += delegate (object sender, EventArgs eventArgs) { };
// using delegate, signature is optional actually
MyEvent += delegate { };
}
private static void Target(object sender, EventArgs eventArgs)
{
}
private static void Program_MyEvent(object sender, EventArgs e)
{
}
public static event EventHandler MyEvent;
}
}
那麼,有沒有做+ =事件處理程序和+ =方法之間的diffrence? – Spaghetti
不,你可以,但沒有必要,看我更新的答案。 – Aybe
@Spaghetti - 不,這個答案中的五個「+ =」樣式中的每一個都做了完全相同的事情 - 它們將一個委託實例附加到該事件。 – Enigmativity