3

SeqModule の Append 関数のソース コードを調べていたところ、@xxx が後置されたメソッドが大量に重複していることに気付きました。なぜこれらがここにあるのか誰か知っていますか?

ILSpy スクリーンショット

4

1 に答える 1

5

要するに、これらはさまざまなローカル関数値をサポートする具体的なクラスであり、@xxx 値は、それらが生成される原因となったソース コードの行番号を示します (ただし、これは実装の詳細であり、クラスには任意の名前を付けることができます)。 .

同様に、C# コンパイラは、クラスを定義して匿名デリゲート、イテレータ ステート マシンなどを実装するときに、概念的に類似したスキームを使用します ( C# の「マジック ネーム」がどのように機能するかについては、Eric Lippert の回答を参照してください)

すべての言語機能が CLR できれいに表現できるものに完全に対応しているわけではないため、これらのスキームが必要です。

于 2012-06-28T17:52:04.117 に答える