关于用Reflector反编译C#的DLL后, 有一个方法不懂应该是写源代码与之对应, 请教大家
下面就是反编译出来的
[CompilerGenerated] private static bool <.cctor>b__5() { return DoSelf(false); } |
这个反编译出来是这样, 请问这是什么方法呢? .cctor是静态构造函数, 但又出现在方法的前面.有人知道的, 请回复一下, 谢谢
有的是微软的语法糖来着,是由我们的源代码编译后,csc将其转换成另外的代码。比如
1、迭代器,yield return 就会编译成继承自Ienumerator和Ienumerable接口的代码,以实现循环逻辑。参考:C#稳固基础:传统遍历与迭代器
2、async和await关键字,也会对其进行编译成状态机代码以实现异步。参考:(译)关于async与await的FAQ
自己试试.net的各种用法就知道了,很多命名无规律的是.net自动生成的
1、.ctor是构造方法;
2、.cctor是类型初始化器,在C#中也就是静态构造函数;
3、当类C实例化时,会先对声明时就进行赋值的字段赋值,然后调用基类的构造函数,基类再以同样的方法构造自己,一直到顶层的System.Object,然后再回来执行C的显式构造方法中的代码,就是这么一个递归的过程。
大概是语法糖了的。。推荐用ILSPY来反编译、