C# 如何查看源程序的IL代码
1、打开microsoft visual studio 2008 / visual studio tools / visual studio 2008 命令提示 ,并输入ildasm 。如下图所示:

2、按enter键,打开IL DASM 窗口,如下图所示:

3、单击 文件 / 打开,打开编译好的.exe文件,即可查看该代码的IL代码
例如:通过visual studio 2008 命令提示 查看如下源程序的IL代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BubbleSort
{
class BubbleSort1
{//升序排序,每一趟都将最大的一个数放在最后
public static void BubbleSort(int[] items)
{
int i, j, temp;
if (items == null)
return;
for (i = items.Length - 1; i >= 0; i++)
for (j=1;j<=i;j++)
if (items[j - 1] > items[j])
{
temp = items[j - 1];
items[j - 1] = items[j];
items[j] = temp;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BubbleSort
{
class BubbleSort2
{
public enum SortType
{
Ascending,
Descending
}
public static void BubbleSort(int[] items, SortType sortOrder)
{
int i, j, temp;
if (items == null)
return;
for (i = items.Length - 1; i >= 0; i++)
{
for (j = 1; j <= i; j++)
{
switch (sortOrder)
{
case SortType.Ascending:
if (items[j - 1] > items[j])
{
temp = items[j - 1];
items[j - 1] = items[j];
items[j] = temp;
}
break;
case SortType.Descending:
if (items[j - 1] < items[j])
{
temp = items[j - 1];
items[j - 1] = items[j];
items[j] = temp;
}
break;
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BubbleSort
{
public delegate bool ComparisonHandler (int first,int second);//委托类型的声明
class BubbleSort3
{
public static bool GreaterThan(int first, int second)
{//升序排序
return first > second;
}
public static bool LessThan(int first, int second)
{//降序排序
return first < second;
}
public static bool AlphabeticalGreaterThan(int first, int second)
{//按照字母表排序。a.CompareTo(b):若a>b 返回值小于0, a<b返回值大于0,
//a=b返回值等于0
int comparison;
comparison = (first.ToString().CompareTo(second.ToString()));
return comparison > 0;
}
public static void BubbleSort(int[] items, ComparisonHandler comparisonMethod)
{
int i, j, temp;
if (items == null)
return;
if (comparisonMethod == null)
throw new ArgumentNullException("comparisonMethod");
for (i = items.Length - 1; i >= 0; i--)
{
for(j=1;j<=i;j++)
if (comparisonMethod(items[j - 1], items[j]))
{
temp = items[j - 1];
items[j - 1] = items[j];
items[j] = temp;
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BubbleSort;
namespace BubbleSort
{
class Program
{
static void Main(string[] args)
{
int intcount;
Console.WriteLine("请输入待排序的整数序列的个数:");
intcount = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入待排序的整数序列:");
int[] items = new int[intcount];
for (int i = 0; i < intcount; i++)
{
items[i]=Convert .ToInt32 ( Console.ReadLine());
}
ComparisonHandler comparisonMethod = BubbleSort3.GreaterThan;
BubbleSort3.BubbleSort(items, comparisonMethod);
Console.WriteLine("调用类BubbleSort3中的排序方法排序后的整数序列为:");
for(int i=0;i<intcount;i++)
{
Console.Write(items[i]);
Console.Write(" ");
}
}
}
}
以上程序的IL代码:

C# 如何查看源程序的IL代码的更多相关文章
- C#程序集系列02,使用记事本查看可执行程序集的IL代码
继续上一篇"C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序",在F盘的as文件夹中已经有了若干程序集.本篇体验使用记事本查看可执行程序集的IL代码 ...
- CLR基础,CLR运行过程,使用dos命令创建、编译、运行C#文件,查看IL代码
CLR是Common Language Runtime的缩写,是.NET程序集或可执行程序运行的一个虚拟环境.CLR用于管理托管代码,但是它本身是由非托管代码编写的,并不是一个包含了托管代码的程序集, ...
- 读懂IL代码就这么简单 (一)
一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉 ...
- 读懂IL代码就这么简单
原文地址:http://www.cnblogs.com/zery/p/3366175.html 一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不 ...
- 读懂IL代码(一)
以前刚开始学C#的时候,总有高手跟我说,去了解一下IL代码吧,看懂了你能更加清楚的知道你写出来的代码是如何运行互相调用的,可是那时候没去看,后来补的,其实感觉也不晚.刚开始看IL代码的时候,感觉非常吃 ...
- 详解.NET IL代码(一)
本文主要介绍IL代码,内容大部分来自网上,进行整理合并的. 一.IL简介 为什么要了解IL代码? 如果想学好.NET,IL是必须的基础,IL代码是.NET运行的基础,当我们对运行结果有异议的时候,可以 ...
- 如何解读IL代码
如何解读IL代码 关于IL代码,我有将从三个方面去揭开它神秘的面纱.IL代码是什么?我们为什么要去读懂IL代码?我们如何去读懂IL代码?这三个问题的解答,将是我解读IL代码的整体思路. IL代码是什么 ...
- 【转载】读懂IL代码就这么简单 (一)
一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉 ...
- 详解.NET IL代码
一.前言 IL是什么? Intermediate Language (IL)微软中间语言 C#代码编译过程? C#源代码通过LC转为IL代码,IL主要包含一些元数据和中间语言指令: JIT编译器把IL ...
随机推荐
- qt之fillder抓包(QT网络版有一些具体的坑)
最近项目中使用到了Qt的网络库,在用的过程中也发现了不少坑和问题,本文仅仅作为记录,方便日后查阅. 因为我们整个客户端的gui都是使用qt来完成的,心想qt既然有网络库,而且真心觉着qt封装的控 ...
- fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
这个问题很奇怪.原来是/machine:X86 /machine:X64这两个链接器选项一起使用了.所以就冲突了.接手别人的项目就是晕啊.不知道为什么在VS中linker commandline的ad ...
- 开发人员应该知道的SEO
搜索引擎是如何工作的 > 如果你有时间,可以读一下谷歌的框架: http://infolab.stanford.edu/~backrub/google.html > 这是一个老的,有些过时 ...
- poj 2481 Cows(数状数组 或 线段树)
题意:对于两个区间,[si,ei] 和 [sj,ej],若 si <= sj and ei >= ej and ei - si > ej - sj 则说明区间 [si,ei] 比 [ ...
- Palindrome Linked List 解答
Question Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O ...
- 【转】DM8168添加DSP音频编解码算法--集成现有voice或audio codec
本文根据“How to integrate audio/voice in RPE in EZSDK.pdf”整理,建议读者直接下载,参考原文件.原文件下载链接: http://download.csd ...
- C#基于UDP实现的P2P语音聊天工具(1)
这篇文章主要是一个应用,使用udp传送语音和文本等信息.在这个系统中没有服务端和客户端,相互通讯都是直接相互联系的.能够很好的实现效果. 语音获取 要想发送语音信息,首先得获取语音,这里有几种方法,一 ...
- JUnit4基础 使用JUnit4进行单元测试
JUnit 4全面引入了Annotation来执行我们编写的测试. 关于JUnit 3的使用可以参见:http://www.cnblogs.com/mengdd/archive/2013/03/26/ ...
- 一步步学算法(算法分析)---6(Floyd算法)
Floyd算法 Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特·弗洛伊德命 ...
- [置顶] 正则表达式应用:匹配IP地址
都知道iP地址有四个数值,三个点号组成.三个数值的具体范围为0到255,为了使用正则表达式匹配就必须分析IP地址的组成 1先分析数值,2再组合数值和点号 1先分析数值 IP地址的数字范围从0到255, ...