使用ILSpy分析C#代码

ILSpy是一个开源的.NET程序集查看工具和反编译工具(ILSpy is the open-source .NET assembly browser and decompiler)。icsharpcode/ILSpy: .NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) – cross-platform! (github.com)

下载与安装

ILSpy

前往地址:https://github.com/icsharpcode/ILSpy/releases,安装最新的版本,比如 :ILSpy 9.0 Preview 1。

.NET 8.0

ILSpy 9.0需要确保安装.NET 8.0环境,可前往地址手动下载:https://versionsof.net/core/8.0/8.0.0/

写代码

举例:这里写两个枚举类型,成员变量类型一个不指定,一个指定为byte类型。

分析代码

找到自定义代码(对应的程序集/dll)。

可以查看IL中间代码(Intermediate Language)或者反编译之后的C#代码,以便了语法糖背后的具体实现细节和编译器所作的优化。

目录为\Library\ScriptAssemblies,在游戏根目录找到Library文件夹,进入ScriptAssemblies文件夹,找到Assembly-CSharp.dll文件,或者如果做了dll拆分,找到对应的dll。

以下是上述枚举类型Enum_A和Enum_B编译的IL代码:

可以看到,默认情况下,Enum_A枚举成员的关联常数值为int32类型,从0开始;Enum_B成员指定byte类型被编译为8位无符号整型uint8。