自定义>>操作符会遇到>>的第二个参数要求是数字的限制,所以以下编译失败:
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

 

posted on 2012-07-17 15:59  江振  阅读(2454)  评论(0)    收藏  举报