前言
旧的都是我以前博客的迁移。
我们写代码有时候遇到一些问题,或者我们想优化我们的代码,我们想要看编译后的运行情况,那么反编译是必须要做的一件事。
正文
在此我自己使用的是reflector和ILSpy,为什么使用这两种呢?
我们知道第一种reflector是收费的,但是我们有时候在不得已的情况下还是要用的。
为什么我说不得已的情况下用呢?因为有时候ILspy 反编译不出来。
对比
因为反编译工具的不同,那么编译出来的东西差别还是有的。
下面是相同代码反编译下的情况。
reflector
private static void Main(string[] args)
{
CacheItemPolicy policy = new CacheItemPolicy {
RemovedCallback = arguments => Console.WriteLine($"缓存被移除的原因:{arguments.RemovedReason}"),
SlidingExpiration = TimeSpan.FromSeconds(5.0),
Priority = CacheItemPriority.NotRemovable
};
MemoryCache.Default.Add("mykey", "myvalue", policy, null);
Console.WriteLine(MemoryCache.Default.Get("mykey", null));
Thread.Sleep(0x1770);
Console.WriteLine(MemoryCache.Default.Get("mykey", null));
Console.ReadKey();
}
ILSpy
private static void Main(string[] args)
{
CacheItemPolicy policy = new CacheItemPolicy {
RemovedCallback = arguments => Console.WriteLine($"缓存被移除的原因:{arguments.RemovedReason}"),
SlidingExpiration = TimeSpan.FromSeconds(5.0),
Priority = CacheItemPriority.NotRemovable
};
MemoryCache.Default.Add("mykey", "myvalue", policy, null);
Console.WriteLine(MemoryCache.Default.Get("mykey", null));
Thread.Sleep(0x1770);
Console.WriteLine(MemoryCache.Default.Get("mykey", null));
Console.ReadKey();
}
虽然细微的差别,但是我们用人脑去看多种反编译还是痛苦的,所以选择一两种反编译工具即可,不要经常换。最好熟悉relector,收费总是有收费的理由的,有钱的话可以买一份支持下。
对了,在此提醒一下ILSpy 免费的,直接去github下载,不要搞野生,版本可能低一些。