Visual Basic .NET
2002年Visual Basic .NET 2002 问世,此后Visual Basic 包含在
Visual Studio套装中。
该版本又被称为VB 7.0,是随vc#和
ASP.NET一起在2002年发布的最初始的VB.net版本。
C#被大力宣传为微软对付
JAVA的王牌,受到媒体极力关注。然而VB.NET(有时被称为
VB7)影响面不广,这导致VB
社区之外很少人关注它。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言,而且还有不少弱点,比如它比VB6来有一个大了十倍的
进行时(
RunTime),内存footprint也大大增加。
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(VB.NET 8)
该版本又被称为VB 8.0,是VB.Net的重大转变,微软决意在其软件名称中去掉了.NET部份。但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用
微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。
Visual Basic 2008(VB.NET 9)
Visual Basic 2008即VB 9.0,
2008年
2月1日发布。通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用 Visual Basic 快速创建 Windows 程序,现在还可以编写企业水平的客户/服务器程序及强大的数据库应用程序。5 Microsoft Visual Studio 2010(VB.NET 10) Visual Studio 2010于2010年4月12日上市,其中包含 Visual Basic 版本 10(有时称为 VB 2010 或 VB10)。Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010
集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库。
VB.net 是否该被看作VB的新版本或者是另一个完全不同的语言尚在争议中。虽然并非显而易见,但只要某个方法被弃用,它就会可会被自动转换,这说明了该语言的句法并没有出现很多突破性的变化,只是增加了对新功能的支持,比如结构化意外处理机制和短循环表达式(structured exception handling and short circuited expressions)。有一种变化会让旧用户迷惑:Integer和Long
数据类型在长度上分别倍增。16位的 integer 在VB.NET中被认为是Short,而Integer和Long分别是
32位和
64位。同样,
WindowsForms
GUI编辑器和VB Form 编辑器在外观和功能上非常相似。
出现巨大变化的是语意,从运行于基于
COM的deterministic, reference-counted的
引擎之上的
编程环境,转变为全面
面向对象的基于.NET Framework的语言。.NET Framework包括了
CLR(使用通用垃圾收集机制和
JIT编译引擎的
虚拟机)和大量的
类库。VB开发者进入VB.NET要面对新增的大量类库的问题,虽然这在VS 2005的My 功能中已有所阐述。
上述变化表明了许多在运行及维护相关优化事宜下面的假定,一些VB6函数和库不再存在而其它的仍然可用,但是比不上.NET语言中自带的可替换的函数和库来得高效。即使它们可被编译,但大多从VB6转换而来的应用将需要一定程度上的重构(
refactoring),以全面利用新语言的优点。在有关句法、应用调试、部署和术语等方面的变化,有大量的文档可以参考。
1, 比较样例:
两个例子都弹出"Hello,World"并带OK按钮的信息框,它们显示了VB和VB.Net在句法上的相似。
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:
Private Sub Command1_Click()
MsgBox "Hello, World"
End Sub
注意,VB.NET中的所有过程调用都必须加圆括号,而VB6中只有调用函数或者VB6中使用Call来调用过程时
才需要加圆括号,
另外,Command1和Button1并非必须,只是VB和VB.NET系统自动默认的控件名。
两个例子都卸载活动窗口,它们显示了VB和VB.Net在句法上的不同。
VB.NET:
Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click
Me.Close()
End Sub
VB:
Private Sub cmdClose_Click()
Unload Me
End Sub
2, 争议:许多资深的VB程序员抱怨VB.NET,因为VB.NET 2002丢掉了许多不再发行的VB6中使用的大量语言constructs和用户界面功能,并且对保留下来的东西也改变了语意。例如,在VB.NET参数默认是以值方式传递的,而不是以引用方式。VB.NET 2002被半嘲讽半认真地称为Visual Fred或VBDOTNOT。作为对2005-03-08微软拒绝为VB6再提供维护与支持的回应,当月月底出现了反对者的请愿(petition)
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 Editionand
Windows Server 2003有自带.NET Framework,其它版本需要另外安装,这对用户和程序员都不方便。
针对开发者的不满,微软主要做了如下努力:使新的开发更容易启动,而把已开发的VB6代码升级到VB.NET。他们的最新成果可以从扩展阅读里看到, 那里文章和源码例子主要包括:完成VB6中的常见任务如打印预览;整合VB6和VB.NET解决方案(dubbed VB Fusion),从VB6 代码转换到 VB.NET。
编辑本段跨平台和开源的开发
目前和C#相比,针对VB.NET开发的开源工具发展得比较慢,虽然MONO开发平台提供了一个VB.NET特性库(VB.NET-specific libraries)并着手研发一个
编译器和Windows Forms GUI 库.
VB1.0于1991年发布。这个连接
编程语言和用户界面的进步被称为Tripod(有些时候叫做
Ruby),最初的设计是由
阿兰·库珀(Alan Cooper)完成的
4.1 时间线
* 1991年4月,Visual Basic 1.0 Windows版本发布
* 1992年9月,Visual Basic 1.0
DOS版本发布。
* 1992年11月,VB2.0发布。它对于上一个版本的界面和速度都有所改善。
* 1993年夏天,VB3.0发布,分为标准版和专业版。其中包含一个数据
引擎,可以直接读取
Access
数据库。
* 1995年8月,VB4.0发布了
32位版本和16位的版本。其中包含了对类的支持。
* 1997年2月,VB5.0发布。
程序员可以用32位的版本导入由4.0版本创建的16位程序,并且能顺利编译。同时还包含了对用户自建控件的支持。
* 1998年夏天,VB6.0发布。
* 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 Studio2005正式发布。
* 2010年4月12日,Visual Studio 2010版本上市。
使用指定的值下执行指定运算
例子1:程序中只利用一个按纽及清单进行指定的值下执行指定运算 例子中:增设以下的图形工具
图形工具 缺省名称 更改名称 属性 颢示文字
---------------- ---------------------
按纽 buton1 btn1 text 计算器
颢示清单 lstbox1 lst1 text
---------------------------------------
设定名称 设定属性
----------------
N1 double
N2 double
N3 double
answer double
设定宣告属性 指出不同的值代替数字N1,N2,N3 及answer
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
Dim N1, N2, N3, answer As Double
N1= 4000
N2= 9
N3= 5
answer = (N1/ (N2- N3))
Lst1.Items.Add(answer)
end sub
解释:
第一列 - 为btn1按纽对系统VB的宣告(VB.NET程序中已提供的)
第二列 - 为对代数N1,N2,N3 及answer 进行的多重宣告(这例子指派代数为Double数字
一定要使用数字若有小数会同时颢示小数)
值得一提的是使用( , )来宣实是一种懒的做法,最正确的是
Dim N1 as double
Dim N2 as double
Dim N3 as double
Dim answer as double
一列一列地宣告一次
但是小程序可以这样做,当程序过大时会建议用懒的做法
第三列 - 当N1 是 4000
第四列 - 当N2 是 9
第五列 - 当N3 是 5
第六列 - 同时 answer = (N1/ (N2- N3))的数学运算
第七列 - 因此清单上会颢示运算答案
第八列 - 程序结束(这个按纽btn1)
以上一最简单的罗缉运算,也是VISUAL BASIC 发展的关键 最后以上的宣告方法也可以通用于VB版本中
轮入指定的值下执行指定运算
例子2:在表单上先轮入一个或以上的值数值再进行运算。 方法:1.与上例相同增加以上述图形工具 2.增设以下的图形工具
图形工具 缺省名称 更改名称 属性 颢示文字
----------------------------------------
文字盒 textbox1 txt1 text 0
文字盒 textbox2 txt2 text 0
文字盒 textbox3 txt3 text 0
----------------------------------------
设定与上例的相同宣告属性
设定名称 设定属性
------------------
N1 double
N2 double
N3 double
answer double
-----------------
注意:只颢示由第三列至第七列的改变
注意:例子注解将使用( ' )取代,此符号旨可使用于Visual Basice的版本中作为注解,程序将不理会内函的内容。
N1= txt1.text '指示txt1的内容被n1所暂代
N2= txt2.text '指示txt2的内容被n2所暂代
N3= txt3.text '指示txt3的内容被n3所暂代
answer = (N1/ (N2- N3)) '相同的除数及淢数
Lst1.Items.Add(answer) '计算后将颢示在清单上
注意1:(txt1, txt2, txt3)后的.text是指把被颢示的内函的值文字或数字(但不包函符*号或特殊字)的设定。
注意2:(当使用者不想使用清单作颢示时,而想用文字盒作为替代,那么我们进行以下的改动
假设我们使用例1进行修改时
步骤1.增设以下图形工具 -
图形工具 缺省名称 更改名称 属性 颢示文字
----------------------------------------
文字盒 textbox4 txt4 text 0
步骤2删除 - 把设计版面中的清单中(lst1)中清除 步骤3删除 - 把程序码中第六行的Lst1.Items.Add(answer)清除. 步骤4更改程序码 - 在被清除的同一行中加入:txt1.text = answer
设定指定的文字及显示在清单上
Format String
For Loop
if Then Else
Data Base