2

を記述する_exporter.csvRowProcessed +=と、Visual Studio 2010 は、上記のイベントを処理するメソッドを作成するように提案し、次にこれを実行します。
_exporter.csvRowProcessed += new CsvRowProcessedHandler(RowProcessedHandler);

私が知りたかったのは、このようにハンドラー メソッドをイベントに直接割り当てるのではなく、新しいデリゲートを作成してからハンドラー メソッドを割り当てるのはなぜですか?

exporter.csvRowProcessed += RowProcessedHandler;

念のため、コード全体を次に示します。

    private void bg_DoWork(object sender, DoWorkEventArgs e)
    {
        object[][] data = _grid.AsMatrix();
        _exporter.csvRowProcessed += new CsvRowProcessedHandler(RowProcessedHandler);
        string csv = _exporter.CreateCSVString(data);

        StreamWriter writer = new StreamWriter(_path, false);
        writer.Write(csv);
        writer.Close();
    }

    void RowProcessedHandler(object o, int currentRow)
    {
        radProgressBarElement.Text = "Procesando linea " + currentRow;
        radProgressBarElement.Value1 = currentRow;
    }
4

1 に答える 1

4

どちらのフォームも、新しいデリゲートインスタンスを作成します。私が知る限り、それらは生成されたコードで同等です。

私もメソッド グループの変換を好みますが、(コメントに記載されているように、VS 2012 より前に) 変更されていないのではないかと考えています。実際、作成されるデリゲートのタイプを示す、より明示的な形式を好む人もいます。

于 2013-02-19T15:34:13.427 に答える