當我寫_exporter.csvRowProcessed +=
時,Visual Studio 2010提供了我創造的方法來處理該事件,然後繼續這樣做:
_exporter.csvRowProcessed += new CsvRowProcessedHandler(RowProcessedHandler);
Visual Studio的C#自動事件處理程序生成。爲什麼它會創建一個新的代理?
我想知道的是,爲什麼它創建一個新的委託什麼,然後爲其分配一個處理程序方法,而不是直接將處理程序方法分配給像這樣的事件?
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;
}
您使用的是Resharper還是其他工具? – JMan 2013-02-19 15:33:53
我正在使用Productivity Power Tools擴展,但據我所知該功能是Visual Studio原生的。 – Uri 2013-02-19 15:36:51
目前尚不清楚你的編輯部分是什麼意思。通過引入一個新的局部變量來完成你已經輸入的內容,這將是非常奇怪的IMO。 – 2013-02-19 15:40:04