在使用IDE进行编译的时候,这个过程具体的叫法是,使用编译器面向CLR来生成代码。对于不同的开发语言,使用的的编译器也不一样,但是生成的代码都一样。 “无论选用哪一个编译器,结果都是一个托管模块。” 托管模块中的中间语言(MSIL),是编译器编译代码时生成的代码,它是与CPU无关的机器语言。...
分类:
其他好文 时间:
2014-08-11 17:00:22
阅读次数:
249
Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库。LuaInterface则用于实现Lua和CLR的混合编程。(一)Lua from the CLR 测试环境:在VS2010中建一个C#控制台应用程序,并添加LuaInterface.dll的引用(安装LuaFor...
分类:
其他好文 时间:
2014-08-10 01:39:39
阅读次数:
554
一、泛型1.CLR编译时,编译器只为MyList类型产生“泛型版”的IL代码——并不进行泛型的实例化,T在中间只充当占位符。例如:MyList类型元数据中显示的2.执行的时候,当JIT编译器第一次遇到MyList时,将用int替换“范型版”IL代码与元数据中的T—进行泛型类型的实例化。例如:Main...
分类:
Web程序 时间:
2014-08-08 21:05:06
阅读次数:
312
1 什么是.NET?什么是CLI?什么是CLR?IL是什么?JIT是什么?它是如何工作的?GC是什么?简述一下GC的工作方式?.net的全称是.NET Framework 是一种托管代码的编程模型,采用系统虚拟机运行的编程平台以通用语言运行库(CommonLanguageRuntime)为基础支持多...
分类:
Web程序 时间:
2014-08-03 17:40:55
阅读次数:
461
对于这篇,不想再对值类型进行讨论,如要看值类型的内存怎么玩可以看一下(CLR内存那点事 初级),我们这篇主要讨论一下引用类型。先来装备两个类 internal class Employee { public static Employee LookUp(string name) ...
分类:
其他好文 时间:
2014-08-01 15:43:11
阅读次数:
214
string是比特殊的类,说引用类型,但不存在堆里面,而且String str=new String("HelloWorld")这样的重装也说没有的。我们先来看一个方法 class Program { static void Main(string[] args) ...
分类:
其他好文 时间:
2014-07-31 20:15:57
阅读次数:
192
最近回头看了一下书,对内存的理解又有新的认识。我所关注的内存里面说没有寄存器的,所以我关注的只有 托管堆(heap),栈(stack), 字符串常量池(string是一个很特殊的对象)首先我们看两个方法: void M1() { string nam...
分类:
其他好文 时间:
2014-07-31 16:40:56
阅读次数:
137
1.它计算类型以及所有基类型(一直到System.Object,虽然它没有定义自己的实例字段)中定义的所有实例字段需要的字节数。堆上的每个对象都需要一些额外的成员---即“类型对象指针”和“同步块索引”。 这些成员由CLR用于管理对象。这些额外成员的字节数会计入对象大小。2.它从托管堆中分配制定类型...
分类:
其他好文 时间:
2014-07-31 12:42:36
阅读次数:
188
一、定义接口 接口对一组方法签名进行了统一命名。定义接口类型时,可指定的可见性为public 或 internal,但在[CLR via C#]第3版书中的原话是:"定义接口类型时,可指定你希望的任何可见性/可访问性(public,protected,internal等)",个人认为这句话说得不妥。...
分类:
其他好文 时间:
2014-07-31 02:19:55
阅读次数:
250
CLR(公用语言运行时)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。.NET提供了一个运行时环境,叫做公用语言运行时(Commen Language Runtime),是一种多语言执行环境,支持众多的数据类型和语言特性。他管理...
分类:
其他好文 时间:
2014-07-30 20:07:24
阅读次数:
225