F#核心方法的后缀数是多少?

Jos*_*den 3 f# seq

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

ILSpy截图

kvb*_*kvb 5

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

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

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