本页使用了标题或全文手工转换

Visual Basic .NET

维基百科,自由的百科全书
跳转至: 导航搜索
Visual Basic .NET
编程范型 多重编程范式结构化指令式面向对象宣告式
发行时间 2001
設計者 微软
實作者 微软
最新发行时间 2013(12.0.21005.1) / 2013年10月13日,18個月前2013-October-13
型態系統 静态强类型同时为类型安全和不安全[1], 标明类型系統
主要實作產品 Microsoft Visual StudioMicrosoft Visual Studio Express.NET Framework SDKMono
衍生副語言 Small Basic
啟發語言 Visual BasicC#
作業系統 主要在Microsoft Windows
同时可支持Android, BSD, iOS, Linux, Mac OS X, SolarisUnix
許可證 专有软件商业软件/免费软件
常用文件扩展名 .vb
網站 msdn.microsoft.com/zh-cn/vstudio

Visual Basic .NET (VB.NET).NET Framework框架下的一种多重编程范式高级语言

VB.NET,由微软公司于2002年作为原有的Visual Basic的继承者而推出。虽然自2005年起,语言名称中的“.NET”就已经被去掉了,但为了与VB 6.0及以前版本的Visual Basic进行区分,“Visual Basic .NET”的名字仍然被用来指代VB 7.0及以后的Visual Basic。VB.NET与C#同为.Net Framework框架下两种主要的程序设计语言。

微软公司的集成开发环境Visual Studio是最为广泛使用的VB.NET开发工具。然而Visual Studio的大部分版本都是价格不菲的商业软件,除了Express版本Visual Studio Community(以上两者皆为免费软件)。除了Visual Studio,SharpDevelopMono也是可用的VB.NET开发环境。

语法特性[编辑]

例子(Hello World)[编辑]

这里给出了一个Hello World的例子。通过它们您可以更好地理解Visual Basic的特性。(此源代码运行于命令行下)

Module Mdl_Main
    Sub Main()
        Console.WriteLine("Hello World")
    End Sub
End Module

这个程序能输出Hello World

Module Mdl_Main

第一行是模块定义,命名空间的定义一般可以省略。VB.NET中,所有函数,过程与变量的声明都必须在模块或者类的内部,而不能直接存在于命名空间内部。

Sub Main()

第二行定义了名为Main的过程。一般来说,“Sub Main()”是程序的入口点。

Console.WriteLine("Hello World")

第三行输出“Hello World”。

End Sub

第四行结束了过程Main的定义。

End Module

第五行结束了模块Mdl_Main的定义。

与旧版VB比较[编辑]

与旧版VB(VB 6.0及以前)相比较,VB.NET明显受到了.Net Framework中其他语言思想的影响。与旧版VB相比,VB.NET更加严格而不失灵活。

  • Long类型与Integer类型的长度分别倍增,达到了64位和32位。
  • 事件的处理过程不再依赖于名称,而是通过Handle子句进行静态绑定或者在运行时进行动态绑定。例如处理按钮控件Button1Click事件:

Visual Basic 6:(注意此过程的名称不可改变)

Private Sub Button1_Click()
    'Work to do
End Sub

VB.NET:(注意此过程的名称无关紧要)

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handle Button1.Click
    'Work to do
End Sub
  • 很多原有的实现特殊功能的语句被相应定义好的函数替代。这减少了关键字的使用(如Open()函数取代Open语句,窗体的Print()方法取代Print语句)。同时,被封装好的、功能更强大的、通用于.Net Framework框架的类被推荐用来取代原有的语句。
  • 对一些更强大的语法特性的支持,如:LINQLambda表达式(Visual Basic 2010起支持多行Lambda)。
  • 同样使用:作为一行中分行的符号,_作为续行符。但是VB.NET自Visual Basic 2012起允许在函数的定义与调用中不加_地用换行分隔各个参数。

与C#等C家族语言比较[编辑]

与C家族语言相比,VB.NET则较多保留了VB的特征,比如:

  • 与C家族语言统一使用{}定义语句块不同,VB.NET每种语句块都有对应的开头与结尾。如If ... Else ... End IfClass ... End Class
  • VB.NET定义变量使用Dim关键字,同时使用PublicPrivateProtected表明作用域时可以省略Dim
  • VB.NET表示变量类型的方式是在变量名后附加As Type(Type为变量类型),而C家族语言是在变量名之前书写类型名,无论在定义变量时还是在函数与形参的声明时都是这样。
  • VB.NET中有没有返回值的特殊子过程Sub。VB.NET中没有void类型,C#中返回值为void的函数对应了VB.NET中的Sub
  • VB.NET中有一种特殊的类型Module,相当于C#中的static class

下面这两份功能一致的代码展现出了VB.NET与C#的很多不同之处:

  • Visual Basic:
Namespace N
	'Comment
	Module M
		Public Function GetSum(arr() As Integer) As Integer
			Dim Sum = 0 'Auto Type Infer
			Dim i As Integer
 
			For Each i In arr
				Sum += i
			Next
 
			Return Sum
		End Function
	End Module
 
	Class C
		Private v As Integer
 
		Public Function F() As Integer
			Return v * v
		End Function
 
		Public Sub S(value As Integer)
			Me.v = value
		End Sub
 
		Public Sub New() 'Constructor
			Me.v = 0
		End Sub
	End Class
 
End Namespace
  • C#:
namespace N
{
	//Comment
	static class M
	{
		int GetSum(int[] arr)
		{
			var Sum = 0;
			int i;
 
			foreach(i in arr)
			{
				Sum += i;
			}
 
			return i;
		}
	};
 
	class C
	{
	private:
		int v;
	public:
		int F()
		{
			return v * v;
		}
 
		void S(int value)
		{
			this.v = value;
		}
 
		C() //Constructor
		{
			this.v = 0;
		}
	};
}

VB.NET与C#同为.Net Framework的两大主力程序设计语言,尽管有着各种各样的不同,两者最终都编译为MSIL并由CLR运行。两者功能基本一致,并可以在.Net Framework框架下方便地互相调用与协同开发。关于两者的优劣一直见仁见智,不过客观来讲,两种语言并无优劣之分。

历史[编辑]

2002年 Visual Basic .NET(VB 7.0)[编辑]

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

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

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

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

微软在后续版本中撤销了一些过激的更改,并且吸取了经验。在以后版本中,语法的更改变得更加谨慎。

2003年 Visual Basic .NET 2003(VB 7.1)[编辑]

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),它是分发给各国某些学者免费使用的版本。

2005年 Visual Basic 2005(VB 8.0)[编辑]

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

主要的变动:

  • 不再支持“Edit and Continue” - 早期Visual Basic可以在调试时修改代码并且不经重新编译地执行。Visual Basic 2005去掉了这个功能;
  • 设计时表达式求值;
  • 提供My伪命名空间,包含了不需大量编码而访问特定.NET Framework功能的简单方式;提供了改进的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等工具处理而自动生成文档;
  • 操作符重载;
  • 支持在其它语言中已经广泛使用的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老版本升级的可行方法。

2008年 Visual Basic 2008(VB 9.0)[编辑]

Visual Basic 2008(VB 9.0)于2007年11月9日与Microsoft .NET Framework 3.5一起发布。

在VB2008中,微软增加了许多功能,包括:

  • IIF函数
  • 匿名类型
  • 支持LINQ
  • Lambda表达式
  • XML数据结构
  • 类接口

2010年 Visual Basic 2010(VB 10.0)[编辑]

Visual Basic 2010于2010年4月发布。

2012年 Visual Basic 2012(VB 11.0)[编辑]

2013年 Visual Basic 2013(VB 12.0)[编辑]

尚未发布 Visual Basic 2015(VB 14.0)[编辑]

参考資料[编辑]

  1. ^ Option Strict 开关可以用于切换安全或不安全。
  2. ^ http://classicvb.org/petition/ petition
  3. ^ http://msdn.microsoft.com/VBRun/ VBRun website

参见[编辑]

Visual Basic Visual Studio C#

外部链接[编辑]

官方网站[编辑]

教程[编辑]

其他[编辑]