日期:2014-05-17  浏览次数:20650 次

今天看见一个之前没见过的方法写法(看看有没有大牛知道)


用反编译工具看的,在方法名前有个感叹号,之前从没看过这种写法,看看有没有大牛知道。
反编译工具

------解决方案--------------------
以 ILDeasm.exe 输出的 IL 为准。

用这个工具看下,如果是Finalize,那么是析构函数

如果是 !BlpImage(),那么是非标准C#编译器产生的方法,在IL中,允许这样的方法名。
------解决方案--------------------
重载函数在编译时,生成的隐藏函数

参考 C++ 编译方面的资料,我们得知

void a(){}
void a(string s){}

两个函数在编译后,会分成两个函数
一个是 a()
另一个 a_1() //这个_1不确定,资料比较老,印象不深了

所以在反编译的时候,显然反编译工具并不会在两个函数不相关的函数中识别出关联,所以估计它随便做了个命名,或者标志了自己无法理解的东西