3

イベントがあり、ハンドラーをそれに関連付けます。ハンドラー メソッドを作成するときに、関数が受け取る引数をどのように知ることができますか?

例:

    // Add an event handler to be called whenever there is new color frame data
            this.sensor.ColorFrameReady += this.SensorColorFrameReady;
            this.sensor.AllFramesReady += this.AllFramesReady;

    //handler
     private void AllFramesReady(object sender, AllFramesReadyEventArgs allFramesReadyEventArgs)
    {


        throw new NotImplementedException();
    }

object sender関数の引数がすべてのフレームの準備ができている引数であることをどのように知ることができますか?

4

4 に答える 4

6

そのイベントのドキュメントを調べます。そのイベントを定義するデリゲートを指定します。次に、そのデリゲートのドキュメントを参照して、デリゲートと一致する関数のシグネチャを確認できます。

または、ほとんどの人が行っているように、調べるのではなく、Visual Studio に頼って教えてもらうこともできます。(イベントにカーソルを合わせると、デリゲートが何であるかがわかります。またはSomeEvent +=、キーボードに入力すると、適切なシグネチャのイベント ハンドラーの新しいスタブを作成するオプションが表示されます。)

引数の名前は無関係であることに注意してください (好きなものを使用してください)。型だけが重要です。

于 2013-07-03T20:41:56.557 に答える
4

Visual Studio でこれを行う手動の方法は、入力this.sensor.ColorFrameReady +=してから Tab キーを 2 回押して、既定の実装が何であるかを確認することです。署名を表示する他のすべてのイベント/デリゲートについても、これを同様に行います。

このように実行する場合、イベントとデリゲートのソース コードを持っている必要はありません (持っていない場合もあります)。

私は何年にもわたって C# コーディングを行ってきましたが、これを行うためのより良い方法を実際に見つけたことはありません。(実際に解決策を探したことはありませんが、明らかな解決策はありません。)

于 2013-07-03T20:45:10.887 に答える
1

Visual Studio の場合: イベント名を右クリック -> [定義に移動] をクリックします。これでイベントに参加できます。ハンドラー クラス名を右クリック -> [定義に移動] を選択します。これにより、デリゲートの定義が表示され、メソッド シグネチャが提供されます。

これは、Visual Studio の設定によって多少異なる場合があります。

于 2013-07-03T20:43:18.807 に答える
1

イベントにはデリゲート型があります。デリゲート型は、ハンドラー メソッドのシグネチャを定義します。したがって、イベント デリゲート タイプを調べると、必要な署名が見つかります。

于 2013-07-03T20:43:21.180 に答える