VB.NET还是比较常用的,于是我研究了一下CLR VB.NET,在这里拿出来和大家分享一下,希望对大家有用。
迄今为止,业界对VB.NET讨论得最多的特色或许就是CLR VB.NET运行在CLR之上,正是CLR VB.NET带来了许多关键的新特色(包括缺点在内)。例如,CLR使得VB.NET支持跨语言的继承以及自由线程。
在VB6 中,分布式VB程序要求有VB运行时库msvbvm60.dll支持,即该运行时库必须随同应用一起分发。其他许多语言,比如C++ 和Java,也有类似的要求。
在.NET中,所有Visual Studio 语言共享同样的运行时环境CLR.改用CLR带来了几个重要的结果:现在所有Visual Studio 语言都共用同样的IDE 、同样的窗体引擎、同样的异常处理机制,等等。它意味着VBc在很大程度上已经可以和.NET的其他语言相提并论,如C#等。然而,对于CLR 的异议仍旧存在,VB业界仍在激励地争辩它地价值。
不管应用是用VB、C#还是其他.NET语言编写,所有VS.NET代码都是编译成中间语言(Intermediate Language ,IL)。当应用运行时,一个实时编译器(just-in-time compiler ,或称为JIT )就把IL代码编译成机器语言。在理论上,它意味着为非Windows 的平台构造.NET运行环境是可能的,但目前还没有出现有关这类系统的正式消息。IL有一个缺点:正如VB在5.0 以前的版本,IL代码对于类似的反向编译工程很敏感。由于存在这种可能性,许多开发者对于.NET框架的整体安全性抱有怀疑。
对CLR 进行优化影响IL层次上的代码,它使得所有使用CLR 的语言受益。然而,对于特定语言的优化涉及到如何把代码编译成IL代码,它根据特定语言的语法进行。因此,.NET各种语言之间存在一定的性能差异是必然的。但不管如何,从整体上来看这仍旧是好事,例如CLR 为VB带来了和C#一样的调试和分析工具——之所以能够如此,是因为它们都使用一样的工具。
CLR 提供了前所未有的跨语言集成能力,其中包括跨语言继承代码的能力。
所有使用CLR 的语言都使用一个公共类型系统(Common Type System),它使得开发那些运用多种语言的应用变得更为容易。
在CLR 之内运行的代码称为“受管理的代码”(Managed Code),受管理代码所使用的内存由CLR 全面控制。受管理的代码有着许多优点,包括交叉语言集成、跨语言异常控制以及一个组件交互的简化模型。VB.NET只能以受管理代码方式运行,与此相对应,C#却具有将代码转入非受管理方式运行的能力(运行在CLR 之外),比如执行指针处理之类的操作。这是VB.NET不能与C#相提并论的地方之一。然而,这种能力的是否重要,对于不同的人、不同的用途来说都有所不同。
由CLR 导致的体系上的不同不仅仅是跨语言继承、共享功能和受管理代码,它还有更深刻的意义。VB.NET 的底层体系不再是COM ;另外,VB.NET中所有东西都是对象,甚至连字符串也一样。由于这些原因以及其他许多原因,Microsoft 改变了底层体系管理对象的方法。COM 系统通过引用计数方式管理对象,每当对象被引用时,引用计数就增加。当对象引用超出作用范围或者被释放时,计数器的值就减少;一旦引用计数为0 ,对象就被释放。Microsoft 声称。
NET 体系中的引用计数开销实在太大,使得.NET采用引用计数不再合适,因此它就放弃了引用计数,改用垃圾回收(Garbage Collection)。以上介绍CLR VB.NET。
【编辑推荐】