3

我正在尝试了解使用 C# 进行编程的 excel 添加。对于这样的项目,有一个名为 ThisAddIn.cs 的文件,它处理所有事件,如 WorkBookOpen、WorkBookClose 等。处理此类事件的代码是这样的 -

this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);

就它的作用而言,这看起来很简单,但我不明白为什么它使用 += 符号来分配而不是 = 符号。+= 符号在这种类型的赋值中表示什么。它是与 C# 相关还是特定于 AddIn 开发的东西。我对 C# 也很陌生。任何帮助,将不胜感激。

谢谢。

4

2 回答 2

12

这是 C# 中比较陌生的约定之一。要知道的事情是:

  • 委托是代表调用一个或多个方法的能力的对象。
  • 两个委托的总和是三分之一,当被调用时,调用它的被加数。
  • 当事件发生时,将调用与该事件关联的委托。

例如,如果您有:

static void M() { Console.WriteLine("Hello!"); }
static void N() { Console.WriteLine("Goodbye!"); }
...
Action foo = M;
foo(); // Hello!
Action bar = N;
bar(); // Goodbye!
Action sum = foo + bar;
sum(); // Hello! Goodbye!
foo += bar; // Same as foo = foo + bar
foo(); // Hello! Goodbye!

现在很清楚为什么 += 意味着“将此处理程序与事件相关联”?

(顺便说一句,我当时写了很多 Excel C# 插件代码。)

于 2013-04-26T23:08:47.340 回答
3

+= 是用于添加事件处理程序的 C# 约定。那里的代码意味着您将 Application_WorkbookOpen 函数连接到 WorkbookOpenEvent。

http://msdn.microsoft.com/en-us/library/ms743596.aspx

于 2013-04-26T23:01:47.813 回答