首页 > Windows开发 > 详细

c# 反编译对比(旧)

时间:2020-04-20 16:54:58      阅读:68      评论:0      收藏:0      [点我收藏+]

前言

旧的都是我以前博客的迁移。

我们写代码有时候遇到一些问题,或者我们想优化我们的代码,我们想要看编译后的运行情况,那么反编译是必须要做的一件事。

正文

在此我自己使用的是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下载,不要搞野生,版本可能低一些。

c# 反编译对比(旧)

原文:https://www.cnblogs.com/aoximin/p/12728570.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!