自定义>>操作符会遇到>>的第二个参数要求是数字的限制,所以以下编译失败:
public static RegularExpression operator >> (RegularExpression left, RegularExpression right)
>> 对应方法名是 op_RightShift 再加上SpecialName 特性 编译器就能生成正确的IL代码:
[SpecialName] public static RegularExpression op_RightShift (RegularExpression left, RegularExpression right)
编译成IL以后方法签名是:
.method public hidebysig specialname static
class CompilerLib.Scanner.RegularExpression op_RightShift (
class CompilerLib.Scanner.RegularExpression left,
class CompilerLib.Scanner.RegularExpression right
) cil managed