3

C#を使用したプログラミングでのExcelの追加を理解しようとしています。このようなプロジェクトには、WorkBookOpen、WorkBookClose などのすべてのイベントを処理する ThisAddIn.cs というファイルがあります。このようなイベントを処理するコードは次のようになります。

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

これは何をしているのかという点では簡単に見えますが、割り当てに = 記号ではなく += 記号を使用する理由がわかりません。このタイプの代入で += 記号は何を意味しますか。それは C# に関連するものですか、それともアドイン開発に固有のものですか。私はC#も初めてです。どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

12

これは、C# の奇妙な規則の 1 つです。知っておくべきことは次のとおりです。

  • デリゲートは、 1つまたは複数のメソッドを呼び出す機能を表すオブジェクトです。
  • 2 つのデリゲートの合計は、呼び出されたときに被加数を呼び出す 3 分の 1 です。
  • イベントが発生すると、そのイベントに関連付けられたデリゲートが呼び出されます。

たとえば、次の場合:

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 に答える