Visual Studio C#自动事件处理程序生成。为什么要创建新的委托?

时间:2013-02-19 15:32:58

标签: c# visual-studio-2010 visual-studio

当我写_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;
    }

1 个答案:

答案 0 :(得分:4)

两种表单都会创建一个新的委托实例。就我所知,它们在生成的代码中是等效的。

虽然我也更喜欢方法组转换,但我怀疑这不是(在评论中指出的VS 2012之前)因为没有足够的好处而改变了。实际上,有些人甚至可能更喜欢显示创建的委托类型的更明确的形式。