为什么将名称'op_Addition'用于运算符'+'而不是名称'+'?

con*_*tor 5 c# cil

当您重载运算符时,例如operator +,编译的CIL看起来像这样:

.method public hidebysig specialname static bool op_Addition(...) { ... }
Run Code Online (Sandbox Code Playgroud)

为什么在op_Addition这里使用名称而不是名称+

我建议应该使用CIL语法

.method public hidebysig specialname static bool +(...) { ... }
Run Code Online (Sandbox Code Playgroud)

成员名字在寻找时,本来就+不是op_Addition.

注意:这是关于语言设计的问题; "因为规范这么说"并不是一个有用的答案.

Mic*_*sen 13

如果您为方法命名+,那么只有支持运算符重载或允许+作为标识符的语言才能调用基础方法.

Unicode标准定义了编程语言中标识符的语法(参见附件7),CLS采用标识符规则,不包括+在该语法中.由于大多数支持Unicode标识符的语言都遵循该语法,因此期望这些语言+作为标识符是不合理的.