WPF--event,delegate,EventHandler,RoutedEventHandlerの違い
773 ワード
delegateはキーワードで、このキーワードは「タイプ」を宣言することができ、この「タイプ」は関数ポインタタイプ(c++の概念)であり、この「タイプ」で具体的な変数を宣言することができます.
なぜこんなに複雑なのか、通常のタイプ宣言変数とは異なり、関数バンドのパラメータが異なるため、多くの「タイプ」で表す必要があるため、この「タイプ」を宣言してから、この「タイプ」で具体的な関数ポインタ変数を宣言する必要があります.
c++の関数ポインタとc#delegateの例を挙げます.
typedefはdelegateの意味で、PFは前述の「タイプ」です
EventHandlerとRoutedEventHandlerは、関数パラメータが異なるため、前述した「タイプ」です.
EventHandlerは、何の情報も持たないイベントを表します.
RoutedEventHandlerは「ルーティングイベント」であり、パラメータRoutedEventArgsは元の送信者などのルーティング情報を持っている.
なぜこんなに複雑なのか、通常のタイプ宣言変数とは異なり、関数バンドのパラメータが異なるため、多くの「タイプ」で表す必要があるため、この「タイプ」を宣言してから、この「タイプ」で具体的な関数ポインタ変数を宣言する必要があります.
c++の関数ポインタとc#delegateの例を挙げます.
typedefはdelegateの意味で、PFは前述の「タイプ」です
typedef int (*PF) (int);
// PF ,
PF pFunc = func;
//
pFunc(11);
int func(int)
{
return 0;
}
EventHandlerとRoutedEventHandlerは、関数パラメータが異なるため、前述した「タイプ」です.
public delegate void EventHandler(object sender, EventArgs e);
public delegate void RoutedEventHandler(object sender, RoutedEventArgs e);
EventHandlerは、何の情報も持たないイベントを表します.
RoutedEventHandlerは「ルーティングイベント」であり、パラメータRoutedEventArgsは元の送信者などのルーティング情報を持っている.