3

我正在查看 SeqModule 中的 Append 函数的源代码,并注意到有大量重复的方法,它们带有 @xxx 后缀。有谁知道为什么这些在这里?

ILSpy 截图

4

1 回答 1

5

简而言之,这些是支持各种本地函数值的具体类,@xxx 值指示导致它们生成的源代码行号(尽管这是一个实现细节,并且可以为类赋予任意名称) .

同样,C# 编译器在定义类以实现匿名委托、迭代器状态机等时使用概念上相似的方案(请参阅 Eric Lippert 的回答了解 C# 中的“魔术名称”如何工作)。

这些方案是必要的,因为并非每种语言特征都能完美地映射到可以在 CLR 中清晰表达的事物。

于 2012-06-28T17:52:04.117 回答