C#学习笔记(1)--了解.NET

本文详细介绍了VB.NET程序的编译与执行过程。包括源代码如何被编译成中间语言(IL),以及公共语言运行库(CLR)如何即时(JIT)编译IL为特定平台的机器码。此外,还探讨了.NET平台的跨平台潜力以及VC++.NET的编译方式。

    学习C#首先必须了解.NET机制,要知道C#程序的运行过程必须了解整个.net平台的程序运行过程。

VB.net程序编译执行流程:
·用户设计出源代码,.net把源代码编译为中间语言(IL)也即托管代码(managed code),并且VB.NET只能编译为IL。IL是一种低级语言,语法很简单,使用数字代码,而非文本代码,可以非常快速地转换为内部机器码。
·CLR(公共语言运行库,也有翻译为公共语言运行时)把IL编译为平台专用的代码也即机器码。IL总是即时编译的(称为JIT编译),JIT编译器并不是把整个应用程序一次编译完(这样会有很长的启动时间),而是只编译它调用的那部分代码(这是其名称由来)。代码编译过一次后,得到的内部可执行代码就储存起来,直到退出该应用程序为止。这样在下次运行这部分代码时,就不需要重新编译了。微软认为这个过程比一开始就编译整个应用程序代码的效率高得多,因为任何应用程序的大部分代码实际上并不是在每次运行过程中都执行。使用JIT编译器,从来都不会编译这种代码。
  这解释了为什么托管IL代码的执行几乎和内部机器代码的执行速度一样快,但并没有说明为什么微软认为这会提高性能。原因是编译过程的最后一部分是在运行时进行的,JIT编译器确切地知道程序运行在什么类型的处理器上,利用该处理器提供的任何特性或特定的机器代码指令来优化最后的可执行代码。
    所以VB.net开发出来的程序的运行过程,就是CLR即时编译并运行IL的过程。也就是运行VB.net程序的机器上必须有一个CLR支持。
  .NET的平台无关性目前只是一种可能,因为到目前为止,.NET只能用于Windows平台。但是以微软的影响和技术实力,.NET用于其他平台是很快的事。
  虽然了解以上的内容开始有些困难,但在了解了这些编译运行的过程,对于以后的学习就有了全局的清晰的思路。
  在初步研究了.NET后,我有一个感觉,微软推出的.NET其矛头直指JAVA。现在不大容易看出这种企图,但当.NET不断壮大后就可以看出这种趋势。
  另外对于VC++.NET,现有的C++源代码会继续编译为内部的可执行代码,不会有修改,但它会独立于.NET运行库运行。也就是说应该可以在VC++.NET 2005中编写VC6的程序并编译。
  实际上今天学的这些内容是来自于《C#高级编程》一书,应该说这些知识同样适用于.NET的各个编程语言。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值