Visual Basic .NET

Page last edited 4,905 天 前
出自shoutwiki
Jump to navigation Jump to search

http://zh.wikipedia.org/w/index.php?title=Visual_Basic_.NET&variant=zh-tw


模板:Cleanup 模板:NoteTAVisual Basic.NET是基于微软.NET Framework之上的面向对象的中间解释性语言,可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。但由于改动太大,导致VB.net对VB的向后兼容性不好,在业界引起不小的争议。

大多的VB.Net程序员使用Visual Studio .Net作为IDE(integrated development environment). SharpDevelop是另一种可用的开源的IDE。VB.Net需要在.Net Framework平台上才能执行。


目前版本[編輯 | 編輯原始碼]

2005年9月以来,存在三种不同版本的Visual Basic .NET。

Visual Basic .NET[編輯 | 編輯原始碼]

Visual Basic .NET(VB 7.0)是随vc#和ASP.NET一起在2002年发布的最初始的VB.net版本。C#被大力宣传为微软对付JAVA的王牌,受到媒体极力关注。然而VB.NET(有时被称为VB7)影响面不广,这导致VB社区之外很少人关注它。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言,而且还有不少弱点,比如它比VB6来有一个大了十倍的运行时(RunTime),内存footprint也大大增加。

Visual Basic .NET 2003[編輯 | 編輯原始碼]

Visual Basic .NET 2003(VB 7.1)是和.NET Framework 1.1一起发布的。新功能包括对.NET Compact Framework的支持和更好的VB升迁向导。并改进了运行状况,IDE稳定性(尤其是后台编译器),以及运行时RunTime稳定性。另外,VB.NET 2003还有一个学院版Visual Studio .NET 2003 Academic Edition (VS03AE),它是分发给各国某些学者免费使用的版本。

Visual Basic 2005[編輯 | 編輯原始碼]

Visual Basic 2005(VB 8.0)是VB.Net的重大转变,微软决意在其软件名称中去掉了.NET部份。在VB2005中,微软增加了许多新功能,以引用VB对于初学者来说的一些优点:

  • Edit and Continue - 也许是从VB那里丢掉的最大的功能,允许代码的编辑和执行立即的执行恢复。
  • Design-time expression evaluation
  • My伪命名空间,提供了访问.NET Framework特定域的不需大量编码的简单方式;还能动态产生类(显然的是My.Forms);提供了改进的VB到VB.NET转换向导;Using语法,简化了需要部署pattern to free resources的对象的使用;My编码,可隐藏由VB.NET IDE写的模板代码;数据源绑定,简化了数据库C/S开发。上述功能(尤其是My)增强了VB.Net成为快速开发应用平台的可能,并与C#进一步区别开来。Visual Basic 2005 通过增加新功能而填补了和其它所谓更强大的.NET语言的差距。
  • 增加了.NET 2.0语言功能包括:泛型(generics)和Partial类(在一个文件里定义一个类的某部份然后再添加更多的定义,这个方法在整合用户编码和系统自动生成编码时尤其有用)。
  • XML注释,可以被NDoc等工具处理而自动生成文档
  • operator overloading
  • 支持在其它语言中已经广泛使用的unsigned integer数据类型。
  • 支持在许多C衍生编程语言已提供的复合操作符如:"+=", "-="
  • IsNot专利:If Not X Is Y表达式被转换成If X IsNot Y。当微软为IsNot申请专利时招致了恶名(尤其来自Real公司)。
  • Visual Basic 2005 Express:作为VS产品线上的一部份,VB2005 Express是专为业余爱好者和新手定制的免费的VS Express系列的一员。Express版本目的定位在帮助人们学习一种语言,所以他们有和标准版一致的用户界面,只是少了一些高级功能。另外,VS Express版包括了VB6.0转换器,提供了从VB老版本升级的可行方法。

Visual Basic 2008[編輯 | 編輯原始碼]

和VB的关系[編輯 | 編輯原始碼]

VB.net 是否该被看作VB的新版本或者是另一个完全不同的语言尚在争议中。虽然并非显而易见,但只要某个方法被弃用,它就会可会被自动转换,这说明了该语言的句法并没有出现很多突破性的变化,只是增加了对新功能的支持,比如结构化意外处理机制和短循环表达式(structured exception handling and short circuited expressions)。有一种变化会让旧用户迷惑:Integer和Long数据类型在长度上分别倍增。16位的 integer 在VB.NET中被认为是Short,而Integer和Long分别是32位和64位。同样,Windows Forms GUI编辑器和VB Form 编辑器在外观和功能上非常相似。

出现巨大变化的是语意,从运行于基于COM的deterministic, reference-counted的引擎之上的编程环境,转变为全面面向对象的基于.NET Framework的语言。.NET Framework包括了CLR(使用通用垃圾收集机制和JIT编译引擎的虚拟机)和大量的类库。VB开发者进入VB.NET要面对新增的大量类库的问题,虽然这在VS 2005的My 功能中已有所阐述。

上述变化表明了许多在运行及维护相关优化事宜下面的假定,一些VB6函数和库不再存在而其它的仍然可用,但是比不上.NET语言中自带的可替换的函数和库来得高效。即使它们可被编译,但大多从VB6转换而来的应用将需要一定程度上的重构(refactoring),以全面利用新语言的优点。在有关句法、应用调试、部署和术语等方面的变化,有大量的文档可以参考。

比较样例[編輯 | 編輯原始碼]

Hello World信息框[編輯 | 編輯原始碼]

两个例子都弹出"Hello,World"并带OK按钮的信息框,它们显示了VB和VB.Net在句法上的相似。

VB:

 Private Sub Command1_Click()
   MsgBox "Hello, World" 
 End Sub

VB.NET:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   MessageBox.Show("Hello, World")
 End Sub

注意,VB.NET中的所有过程调用都必须加圆括号,而VB6中只有调用函数或者VB6中使用Call来调用过程时才需要加圆括号,另外,Command1和Button1并非必须,只是VB和VB.NET系统自动默认的控件名。

卸载活动窗口[編輯 | 編輯原始碼]

两个例子都卸载活动窗口,它们显示了VB和VB.Net在句法上的不同。

VB:

 Private Sub cmdClose_Click()
  Unload Me
 End Sub

VB.NET:

 Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click
  Me.Close()
 End Sub

争议[編輯 | 編輯原始碼]

许多资深的VB程序员抱怨VB.NET,因为VB.NET 2002丢掉了许多不再发行的VB6中使用的大量语言constructs和用户界面功能,并且对保留下来的东西也改变了语意。例如,在VB.NET参数默认是以值方式传递的,而不是以引用方式。VB.NET 2002被半嘲讽半认真地称为Visual Fred或VBDOTNOT。作为对2005-03-08微软拒绝为VB6再提供维护与支持的回应,当月月底出现了反对者的请愿[1]

VB.NET的支持者们认为新语言在很多方面比旧版本更为强大,比如它以相比早期版本更为自然、紧密和完全的方式地加入了现代面向对象的编程范式。反对者们有不同意见,虽然VB6对对象模型支持有缺点,但是二次开发升级到VB.NET 的成本比升级后的收益要高得多。而开发软件发布因特网版本的独立程序员也对VB.NET的RunTime尺寸过大不满。

相对编译成机器码的语言,编译成MSIL的语言包括VB.NET比较容易被反编译。

微软提供了VB到VB.NET的自动转换器,虽几经改进,但仍无法转换全部代码,几乎所有非小型程序都需要人工修改以完成编译。为了运行优化,大多程序需要大量工作去重构。

主要是进行演算的VB程序自然会更容易升迁,但是采用了以下功能,如数据库支持、图形、unmanaged operations,或者在安装启用明细方面都很麻烦。不幸的是,这些恰好是许多商业应用的核心。

另外,Win98及其以上的系统就自带了VB6的运行时(RunTime)库,而VB.NET需要安装大得多的.NET Framework。除了 Windows Vista, Windows XP Media Center Edition, Windows XP Tablet PC Edition 和 Windows Server 2003有自带.NET Framework,其它版本需要另外安装,这对用户和程序员都不方便。且.NET Framework 3.5版僅支援Windows XP、Vista以後的Windows版本。

针对开发者的不满,微软主要做了如下努力:使新的开发更容易启动,而把已开发的VB6代码升级到VB.NET[2]。例子主要包括:完成VB6中的常见任务如打印预览;整合VB6和VB.NET解决方案(dubbed VB Fusion),从VB6 代码转换到 VB.NET。

跨平台和开源的开发[編輯 | 編輯原始碼]

目前和C#相比,针对VB.NET开发的开源工具发展得比较慢。MONO开发平台提供了一个VB.NET特性库(VB.NET-specific libraries)并以推出了一个编译器,还有一个Windows Forms GUI 库在开发中。

沿革[編輯 | 編輯原始碼]

Visual Basic[編輯 | 編輯原始碼]

Visual Basic .NET[編輯 | 編輯原始碼]

  • 2001年,Visual Basic.NET和.NET Framework发布。由于其使用了新的核心和特性,所以很多VB的程序员都要改写程序。
  • 2003年,Visual Basic.NET 2003和.NET Framework 1.1发布。
  • 2004年,微软发布了Visual Studio 2005的测试版本(代号Whidbey)。包含了.NET Framework2.0的测试版本。
  • 2005年,微软宣布将不会再对非.NET版本的VB进行支持。VB社群立即作出反应表示关心这个消息,一些老用户还递交了希望能够继续对VB进行技术支持的请愿书。微软目前还不愿意改变他们的决定。
  • 2005年11月7日,Visual Studio 2005正式发布。
  • 2007年11月19日,Visual Studio 2008與.NET Framework 3.5正式发布。

参考資料[編輯 | 編輯原始碼]

外部链接[編輯 | 編輯原始碼]

官方網站[編輯 | 編輯原始碼]

教程[編輯 | 編輯原始碼]

其他[編輯 | 編輯原始碼]

模板:程序设计语言 模板:Microsoft 模板:DotNET

cs:Visual Basic .NET da:Visual Basic .NET fa:ویژوال بیسیک دات‌نت he:Visual Basic .NET id:Visual Basic .NET is:Visual Basic .NET it:Visual Basic .NET ja:Microsoft Visual Basic .NET ko:비주얼 베이직 닷넷 no:Visual Basic .NET pt:Visual Basic .NET simple:Visual Basic .NET sv:Visual Basic .NET th:วิชวลเบสิกดอตเน็ต vi:Visual Basic 2005