2012-01-01 13 views
1

&function_nameの意味は何ですか? BackgroundWorkerオブジェクトとイベント処理で使用されるデリゲート.NET:&function_name構文

System::ComponentModel::DoWorkEventHandler(this, &Form1::DoWorkEvent) 

に使用される。例えば

、。

デリゲートのプロトタイプは、おそらくこれが&Form1::DoWorkEventDoWorkEventArgsオブジェクトを返すことを意味

public delegate void DoWorkEventHandler(Object^ sender, DoWorkEventArgs^ e) 

のですか?しかしそれはあまり意味がありません。

+0

C++/CLI固有の構文については、なぜ「c#」にタグ付けするのですか? –

+0

コンセプトはC#のものと似ているように見えます(私はC#プログラマーの入力を得るためにそれをタグ付けしたいと思っていました)。コンセプトが違うなら、私はごめんなさい。 – JonaGik

+0

基本的な概念ではなく、特定の構文について質問しています。そして構文は*異なっています – jalf

答えて

3

System::ComponentModel::DoWorkEventHandler(this, &Form1::DoWorkEvent)は、代理人を作成します。デリゲートを作成する構文はgcnew delegatename(thisObject, functionPointer)です。それはとthisthisObjectに設定して呼び出すデリゲートを作成します。

デリゲートを呼び出すには、適切なパラメータで呼び出す必要があります。 delegateVariable->Invoke(parameter1, parameter2, etc)DoWorkEventHandlerの場合、parameter1senderであり、parameter2eである。

あなたは、作成と呼び出しという2つの異なることを混乱させています。行DoWorkEventHandler(this, &Form1::DoWorkEvent)はデリゲートを作成します。 2つのパラメータはthisObjectfunctionPointerであり、sendereではありません。

これは、最初に代理人について学んだことのある本/リソースでカバーされていたはずです。たとえば、this articleと表示されます。

デリゲートインスタンスを作成するには、コンストラクタを呼び出す必要があります。 が静的​​関数をカプセル化している場合は、1つの引数、そのメンバ関数へのポインタ を渡します。インスタンス関数の場合は、 に2つの引数を渡す必要があります。そのインスタンスへのハンドルと、 インスタンスメンバー関数へのポインタです。

0

私のC++はかなり錆びていますが、.NETはまったく見ないと思いますが、標準のC++メンバー関数ポインタです。

関連する問題