在.NET之前的技术中,进程作为独立的边界来使用,每个进程都有其私有的虚拟内存;运行在一个进程的应用程序不能写入另一个应用程序的内存,也不会因为这种方式破坏其他应用程序。该进程用作应用程序之间的一个独立而安全的边界。.NET体系结构应用程序有一个新的边界:应用程序域。使用托管IL代码,运行库可以确保 ...
当有如下这样类似的情况出现的时候,可以有更好的优化方式来处理,那就是分部方法 以上的方式生成如下的IL代码,这里会无谓的去调用一个没有实现的方法,没有意义的: 优化方式:分部方法 改进后的IL 代码实现如下: 1. 没有实现分部方法的时候: 2. 实现了分部方法的时候: 通过这样的方式优化后,更加灵 ...
分类:
其他好文 时间:
2016-07-20 19:08:12
阅读次数:
126
0. 目录 C#6 新增特性目录 1. 老版本的代码 早C#3中引入的集合初始化器,可是让我们用上面的语法来在声明一个字典或者集合的时候立即初始化一些项进去,其实在C#3中这是个语法糖,实质编译后的结果是调用字典或者集合的Add方法逐一添加这些项。但是有一点小小的不直观。先看看这个版的IL吧: 本质 ...
11.illiterate 不识字的 in-前缀,表否定(记忆:原音改写自前缀un-),像水一样的前缀,水货前缀(同化) 同化具体指:在lr前变成il/ir(r/l是弱音),在bp前变成m(为了让单词念起来更顺口,参考下面) 妈妈m:必须闭着嘴读(哺乳音) 奶奶n:必须张着嘴读 b/p:必须闭着嘴读 ...
分类:
其他好文 时间:
2016-07-08 01:34:10
阅读次数:
266
List<T> 可以通过 .Sort()进行排序,但是当 T 对象为自定义类型时(比如自定义模型),就需要 IComparable接口重写其中的方法来实现,实现代码如下: 如果不继续IComparable接口,也可以直接在 .Sort()方法里面写,代码如下: 按照功能排序:List<T> < IL ...
分类:
编程语言 时间:
2016-07-07 19:18:52
阅读次数:
155
1. 老版本写法 上面这段代码大家再熟悉不过了,使用静态类Console的静态方法WriteLine输出一行字符串。插播点关于CLR的相关知识,CLR在执行IL的期间时候是么有命名空间的概念的,它所知道的仅仅是成员的完全限定名(C#1 类型基础)。也就是在调用Console.WriteLine的时候 ...
IL是什么? IL是Intermediate Language的缩写,是.Net代码转化成机器语言的一个中间语言,因此又把IL语言称之为反汇编语言。 IL工具有哪些? 俗话说,工欲善其事必先利其器。了解IL就要首先从使用工具开始。在.Net世界里有数个不同的IL工具,包含编译器和反编译器。最经典的编 ...
分类:
其他好文 时间:
2016-06-27 00:03:25
阅读次数:
178
2.1 .Net Framework部署目标 2.2将类型生成到模块中 本节讨论如何将包含多个类型的源代码文件生成为一个可部署的文件。 System. Console是Microsoft已经实现好的一个类型,用于实现这个类型的各个方法的IL代码存储在MSCorLib.dll文件中。 2.3元数据概述 ...
分类:
其他好文 时间:
2016-06-26 18:26:55
阅读次数:
120
程序集加载和反射,实现了在编译时对一个类型一无所知的情况下,如何在运行时发现类型的信息,创建类型的实例以及访问类型的成员。显现的功能以及效果是十分强大的,比如使用第三方提供的程序集,以及创建动态可扩展应用程序。 23.1 程序集加载 JIT编译器在将方法的IL代码编译成本地代码时,会查看IL代码中引 ...
分类:
其他好文 时间:
2016-06-26 18:26:48
阅读次数:
338
1、关于foreach和for foreach和for都是循环的关键字,使用这两个关键字可以对集合对象进行遍历,获取里面每一个对象的信息进行操作。 上面结果的输出都是一样的,我们来看看IL是否是一样的。 从IL可以看出,for中循环的索引是for自身的索引(即i),foreach在循环过程中会在指定 ...
分类:
编程语言 时间:
2016-06-22 12:47:27
阅读次数:
267