0

これらはステートメントです

this->SizeChanged += ref new SizeChangedEventHandler(this, &MainPage::MainPage_SizeChanged);

Scenarios->SelectionChanged += ref new SelectionChangedEventHandler(this, &MainPage::Scenarios_SelectionChanged);

//These lines were in MainPage Constructor.
//Scenarios is the name of a ListBox

これらの 2 つの行は何をしますか?

MainPage::MainPage_SizeChangedととは何MainPage::Scenarios_SelectionChangedですか? 私が見ることができるこの名前の関数は2つありますが()、関数呼び出しにはありませんか? また、なぜ前に & が付いているのですか? また、戻り値の型が void の場合、どのように引数として使用できますか?

2 行で、なぜ = だけでなく += が使用されているのですか? = を使用するとどうなりますか?

4

1 に答える 1

1

これらの行はイベントをサブスクライブしています。たとえば、SizeChangedはイベントでSizeChangedEventHandlerあり、デリゲート型(関数ポインタに似ていますが、クラスインスタンスへの参照も含まれています)でMainPage_SizeChangedあり、イベントハンドラです。

関数呼び出しで()はないため、はありません。その行を実行するときに関数は呼び出されず、イベントが発生するたびに実行されます。そして、それがC++で関数ポインタが作成される方法であるために使用されます。MainPage_SizeChangedSizeChanged&

=の代わりに使用した場合+=、コードはコンパイルされません。イベントを設定することはできません。サブスクライブ(を使用+=)とサブスクライブ解除()のみが可能-=です。

于 2013-03-16T15:31:07.267 に答える