VB与VB.NET的区别

刚刚接触VB.NET时,心中一直有一个问号——VB和VB.NET究竟有什么区别呢?经过初步学习后,我觉得可以通过以下五个VB.NET的主要特点来了解VBVB.NET的区别。


一、VB.NET有两种新的窗体方式---Windows窗体和Web窗体.

VB.NET允许创建不同类型的应用程序,例如,可以创建ASP.NETASP.NET Web服务应用程序,还允许创建控制台应用程序和作为桌面服务运行的应用程序。

而与此不同的VB,只能创建Windows窗体。


二、VB.NET可以通过新的ADO.NET访问离线的数据源

在访问数据库上,两者还是有比较大的区别的。在具体编程中,窗体FORM往往都包含数据库访问控件,VB6.0的是ADO控件,VB.NET的则是ADO.NET控件。那么ADO和ADO.NET区别又有什么区别呢?

(1)、一些ADO中常见的类型比如RecordSet在ADO.NET中已经没有了,而且在ADO.NET中也新增了许多在传统ADO中找不到的直接对应的新类型(如数据适配器);

(2)、传统的ADO主要针对紧密连接的客户端/服务器系统,而ADO.NET考虑到了断开式连接应用并且引进了DataSet,它代表任意数量的关联表每个表都包含了行和列的集合的本地副本,使用DataSet的话,在断开数据库连接的情况下调用程序集处理和更细它的内容,然后使用关联的数据适配器将修改后的数据提交回数据库

(3)、传统的ADO和ADO.NET的一个显著区别是后者全面支持XML数据呈现。其实从数据库中获得的数据认被序列化为XML,假设XMl通过标准的HTTP在层之间传输,ADO.NET就能突破防火墙的限制。

(4)、两者之间最根本的区别在于ADO.NET是托管代码库。


三、VB.NET具备了面向对象的所有特征,包括类、接口、封装、继承和多态性等;

学习VB6.0时,用户可以象建立一个新的窗体一样建立一个新的类,并把它作为一个新的对象.但还只能称是半面向对象的编程语言。而VB.NET是真正意义上的完全面向对象的编程语言。VB.NET中,几乎处理所有事情都与对象有关,它也充分体现了面向对象的三个特征:封装、继承与多态。


四、VB.NET支持结构化异常处理和多线程;

关于错误处理,VB中使用On Error GoTo,而VB.NET则使用了Try...Catch...Finally区块来区别。

(1)VB错误处理代码展示:

'截获错误
On Error GoTo Err1
 
'A为整型变量赋值40000会溢出
A = 40000  '这时会跳到Err1处执行错误处理
 
'给A重新赋值并消息提示A
A = 30000
MsgBox A

Exit Sub
 
'错误处理
Err1:
MsgBox"出错了!" & vbCrLf & "错误编号:" & Err.Number &" 错误描述:" & Err.Description
 
'返回出错语句的下一句继续执行余下的代码
Resume Next

(2)VB.NET错误处理代码展示:

Try 
Dim i As Integer =0 
Dim iresult AsInteger 
 
iresult = 1 /i 
 
//把 ex 作为异常捕获 
MessageBox.Show(ex.ToString()) 
 
Finally 
MessageBox.Show("finally区块被执行") 
//Try结束


在处理并发问题和多任务管理方面,VB6.0支持多个单线程单元,不过它并不支持一个自由线程的模型,多线程模式的工作原理和编程机制对于VB6.0来说完全不适用。而VB.NET通过使用了CLRCommon Language Runtime),从而拥有了许多新特性,其中一个就是创建自由线程的应用。它通过系统的System.Threading类直接创建多线程应用程序。


五、VB.NET支持与其他.NET Framework语言的集成。

.NET Framework中设计了一个通用语言系统(Common Language System,CLS),定义了很多标准的数据类型,.NETFramework支持的所有高级语言都必须同时支持该系统对数据类型的定义。

在编译成MSIL代码的同时,各种高级语言自身的数据类型都被转换成了CLS系统中的标准数据类型,比如,VB.NET中定义的Integer数据类型被转换成了system.int32数据类型,C#中的int类型也被转换成了system.int32数据类型。这样不同语言的变量就可以相互交换信息了,这就是.NETFramework支持混合语言编程的基本原理。

以上就是我暂时了解到的,关于VBVB.NET的区别之处,希望读者多多指点补充。

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...