CLR VB.NET学习经验

开发 后端
这里介绍CLR VB.NET,对CLR 进行优化影响IL层次上的代码,它使得所有使用CLR 的语言受益。然而,对于特定语言的优化涉及到如何把代码编译成IL代码,它根据特定语言的语法进行。

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。

【编辑推荐】

  1. 简单分析VB.NET Dock属性
  2. 浅析VB.NET面向对象编程的优点
  3. VB.NET名字空间学习笔记
  4. 详解VB.NET实现Web Service
  5. 简单讲解VB.NET静态成员
责任编辑:佚名 来源: 博客园
相关推荐

2009-10-14 11:27:20

VB.NET Grou

2009-10-16 14:31:48

VB.NET Noti

2009-10-10 15:43:51

2009-10-19 09:16:08

VB.NET语言

2009-10-26 13:13:17

VB.NET编码规范

2010-01-14 18:14:22

VB.NET开发特点

2009-11-02 15:16:07

VB.NET编程

2009-10-15 13:06:12

VB.NET Shar

2009-10-15 17:57:33

VB.NET List

2009-10-14 09:29:43

VB.NET加密

2010-01-21 14:49:44

VB.NET操作Wor

2009-10-28 16:14:21

VB.NET编写托盘程

2010-01-12 17:02:54

VB.NET文件上传

2009-11-03 10:40:57

VB.NET Prot

2009-10-28 13:35:25

VB.NET共享成员

2009-10-28 17:00:30

VB.NET数据库

2010-01-13 18:09:09

VB.NET动态生成代

2009-10-16 13:19:04

VB.NET Data

2009-10-13 14:29:49

VB.NET名字空间

2009-11-02 18:12:45

VB.NET FLAS
点赞
收藏

51CTO技术栈公众号