
Visual Basic .NET
VB.NET一般指本词条
Visual Basic.NET是基于微软.NET Framework之上的面向对象的程式语言。
其在调试时是以解释型语言方式运作,而输出为EXE程式时是以编译型语言方式运作。
可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。大多的VB.Net程式设计师使用Visual Studio .Net作为IDE(integrated development environment).SharpDevelop是另一种可用的开源的IDE。
VB.Net需要在.Net Framework平台上才能执行。
基本介绍
- 中文名:Visual Basic .NET
- 外文名:Visual Basic .NET
- 编程范型:结构化 指令式 面向对象 声明式
- 发行日期:2002
- 主要实作产品:Microsoft Visual Studio等
- 派生副语言:Microsoft Visual Basic
- Platform:通用语言运行库
- 作业系统:MicrosoftWindows,Android,BSD等
- 许可证:专有软体
- 开发公司:微软(Microsoft)
简介
Visual Basic .NET通常缩写为VB.NET,在某些特定情况下也直接简称VB,比如在.NET这个大话题下或者与其他.NET语言一起讨论的时候。
Visual Basic .NET属Basic系语言,其语法特点是以极具亲和力的英文单词为基础标识,以及与自然语言极其相近的逻辑表达,有时候你会觉得写VB.NET代码就好像在写英文句子一样,从这个角度来说,VB.NET似乎是最高级的一门程式语言,当然在Basic系语言中VB.NET也确实是迄今为止最强大的一门程式语言。
Visual Basic .NET的套用範围包括Windows桌面、Web以及当下突然觉醒的正在奋力追赶的第三大移动平台Windows Phone。
由于改动太大,导致VB.NET对VB的向后兼容性不好,在业界引起不小的争议。
VB.NET是"...中间解释性语言“,这种说法极不準确,甚至完全错误。可能原编辑者是指的编译器会先将源码翻译成MSIL(Microsoft Intermediate Language)中间语言这回事,但这和”解释性语言“有很大差别。
关键字
关键字 | 描述 |
Namespace | 包含类似或相关功能的类的集合 |
Class | 用来定义一个类用以存储对象的属性、方法和事件 |
Sub | 子过程,可以把要使用的数据以参数形式传入,但不返回值 |
Function | 函式,同样可以传参数,但要求有返回值 |
Property | 属性过程,设定或返回对象的属性值 |
Return | 结束当前sub或function,若是函式则返回一个函式值 |
Dim | 声明或定义一个变数 |
New | 创建一个新的实例对象 |
Nothing | 表示一个变数没有值,与其他语言或资料库中的null等价 |
Me | 当前类的实例对象的引用 |
Console | .NET用于访问和操作命令视窗的类,主要用于命令行应用程式 |
Module | 模组,定义一个不是类的代码块,但它同样可以包含变数和方法 |
语言特性
此段列出的是仅Visual Basic .Net语言部分较独特或者较重要的特性。
数据类型
- 数值型:整型(Short、Integer、Long和无符号的Byte)、非整型(Decimal 、Single、Double)
- 字元型:Char、String
- 泛型:List(Of T)、Dictionary(Of K,V)
- 其他类型:Boolean、Date、Object、Enum、Array、ArrayList、Structure
运算符
- 算术运算符:/(除),\(整除),Mod(取模)
- 串联运算符:&,+亦可
- 逻辑/按位运算符:Not、And、Or、Xor、AndAlso、OrElse
- 赋值运算符:= ,^= ,*= ,/= ,\= ,+= ,-= ,<<=,>>=,&=
- 比较运算符:< ,<= ,> ,>= ,= ,<> ,Is ,IsNot ,Like
- 移位运算符:<< ,>>
- 其他运算符:AddressOf 运算符 ,GetType 运算符 ,函式表达式,If 运算符 ,TypeOf 运算符,Await 运算符
- DirectCast 运算符
- TryCast 运算符
- New 运算符
*运算优先权:算术>连线>比较>逻辑运算(用括弧可改变优先权)
详细:
如果表达式中出现几种运算,将按照预先确定的称为“运算符优先权”的顺序计算和解析各个部分。
优先权规则
当表达式包含不止一种运算符时,则按照下列规则对其进行计算:
- 算术运算符和串联运算符的优先权在下面列出,它们的优先权均高于比较运算符、逻辑运算符和位运算符。
- 所有比较运算符具有相同的优先权,它们的优先权均高于逻辑运算符和位运算符,但低于算术运算符和串联运算符。
- 逻辑运算符和位运算符的优先权在下面列出,它们的优先权均低于算术运算符、串联运算符和比较运算符。
- 具有相同优先顺序的运算符将按照它们在表达式中出现的顺序从左至右进行计算。
优先权顺序
运算符的计算优先权顺序如下:
算术运算符和串联运算符
求幂 (^)
一元标识和非(+、–)
乘法和浮点除法(*、/)
整数除法 (\)
取模 (Mod)
加法和减法(+、–),字元串连线 (+)
字元串连线 (&)
算术移位(<<、>>)
比较运算符
所有比较运算符(=、<>、<、<=、>、>=、Is、IsNot、Like、TypeOf...Is)
逻辑运算符和位运算符
非 (Not)
与 (And、AndAlso)
或 (Or、OrElse)
异或 (Xor)
注释
= 运算符只是相等比较运算符,而不是赋值运算符。
字元串连线运算符 (&) 不是算术运算符,但它在优先权方面与算术运算符属于一组。
Is 和 IsNot 运算符是对象引用比较运算符。 它们不比较两个对象的值,只确定两个对象变数是否指向相同的对象实例。
结合性
当具有相同优先权的运算符(例如乘法和除法)在表达式中一起出现时,编译器将按每个运算符出现的顺序从左至右进行计算。
Visual Basic 中的运算符具有“左结合性”。
重写优先权和结合性
可以使用括弧强制表达式中的某些部分先于其他部分计算。 这会重写优先权顺序和左结合性。 Visual Basic 始终先执行括在中括弧内的操作,再执行括弧外的操作。然而,在括弧内,它保持普通优先权和结合性,除非您在括弧内再使用括弧。
流程控制
- 条件:If、Select Case
- 循环:For、For Each、While、Do While… …Loop、Do …Loop Until…
- 终止:Exit [Do、For、Function、Property、Select、Sub、Try]
- 异常处理:Try...Catch...Finally 语法支持"结构化异常处理"。
*三元表达式:IIf(Expression,TruePart,FalsePart),是Microsoft.VisualBasic命名空间下的函式,不论结果如何都会计算TruePart和FalsePart的表达式,它有相应的返回值。
较高版本中存在 If(Expression,TruePart,FalsePart) 运算符,与IIf的区别是它能短路计算,Expression为真时不计算FalsePart,Expression为假时不计算TruePart
系统常量
Visual Basic .Net有很多系统常量,它们都在Microsoft.VisualBasic.Constants命名空间下,这些常量包括很多方面,如表示回车换行符的vbCrLf、表示逻辑结果的vbOK以及用在时间方面的vbShortDate等等。
对象关键字
Visual Basic .Net已经是一门完全面向对象的语言,以下是关于面向对象的一些关键字:
Inherits | 继承 | Overloads | 重载 | |
Shadows | 隐藏覆盖 | Overrides | 重写 | |
Interface | 声明接口 | Implements | 实现接口 |
还有一些与上面对应的如可重载、必须继承等等在这里就没必要一一列出了。
表达式
在Visual Basic .Net使用 Function 或 Sub 关键字创建 Lambda 表达式,就像创建标準函式或子例程一样。 但是,Lambda 表达式包括在语句中。下面分别演示单行与多行。
用Function并返回值:
DimLambdaTest=Function(x)x+1DimLambdaTest1=Function(x)Returnx+2EndFunctionMessageBox.Show(LambdaTest(7))MessageBox.Show(LambdaTest1(7))
用Sub:
DimLambdaTest=Sub(x)MessageBox.Show(x)DimLambdaTest1=Sub(x)MessageBox.Show(x)EndSubLambdaTest(7)LambdaTest1(7)
比起其他语言,Visual Basic .Net用Function和Sub更能直观体现Lambda表达式的本质——匿名方法。
编译
.NET语言,包括VB.NET,它们所开发的程式原始码并不是直接编译成能够直接在作业系统上执行的二进制本地代码,而是被编译成为中间代码,然后通过.NET Framework的通用语言运行时(CLR)——执行。 所有的.Net程式语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码,这与Java的位元组码类似。因此虽然最终的程式在表面上仍然与传统意义上的执行档都具有“.exe”的后缀名。但是实际上,如果计算机上没有安装.Net Framework,那幺这些程式将不能够被执行。在程式执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。所以一旦程式使用了相同的代码,那幺将会调用缓冲区中的版本。这样如果一个.Net程式第二次被运行,那幺这种翻译不需要进行第二次,速度会明显加快。
VB.NET代码之所以不直接编译成二进制机器码,是基于.NET跨平台这一目标的考虑。
版本历史
Visual Basic .NET 2002
2002年Visual Basic .NET 问世,此后Visual Basic 包含在 Visual Studio套装中。该版本又被称为VB 7.0,是与C#一起在2002年发布的最初始的VB.net版本。C#是一门新设计.Net语言并且语法上和Java有一定的相似性,所以被大力宣传为微软对付JAVA的王牌,受到媒体极力关注。然而VB.NET则相反被错误地认为仅仅是VB的一个升级(故有时被称为VB7),它的受关注度也因此较低,当然VB社区以及喜欢Basic系列风格的语言的人还是很关注它的。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言。不过任何一种语言都是有弱点的,当然后面这一点也是.NET语言的共性,那就是运行的计算机上必须装相应版本的.Net framework。
Visual Basic .NET 2003
该版本是和.NET Framework 1.1一起发布的。新功能包括对.NET Compact Framework的支持和更好的VB升迁嚮导。并改进了运行状况,IDE稳定性(尤其是后台编译器),以及运行时RunTime稳定性。另外,VB.NET2003还有一个学院版Visual Studio .NET 2003 Academic Edition (VS03AE),它是分发给各国某些学者免费使用的版本。
Visual Basic .NET 2005
该版本是VB.Net的重大转变。但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程式,如开发使用微软作业系统的手机的程式等。总体来说是一个非常庞大的软体,甚至包含代码测试功能。
Visual Basic .NET 2008
Visual Basic 2008于2008年2月1日发布。通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用 Visual Basic 快速创建 Windows 程式,还可以编写企业水平的客户/伺服器程式及强大的资料库应用程式。
Visual Studio 2010
Visual Studio 2010于2010年4月12日上市,其中包含 Visual Basic .NET 2010 。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资料库等。
Visual Studio 2012
从该版本开始VB.NET已没有单独发售的IDE了,微软给Visual Basic .NET 以及C#开发者的IDE就只有Visual Studio 了。该版本增加了modern(原metro)风格的支持等众多新特性。
Visual Studio 2015
增加了大量新特性,提升你的编写效率。对编译器和开发环境最佳化,提高编译速度,帮你重构代码和解决错误。最明显的14项改进见参考资料的14 Top Improvements in Visual Basic 14。
VB关係
不能简单认为VB .net是VB的新版本。首先它们一个是完全面向对象的语言,而另一个不是完全面向对象的,其次VB .NET是构建于.Net framework之上的。当然,它们同属Basic系列语言,又同为微软所开发,语法上有一定的相似或沿袭是很正常的,但不能因此认为VB .NET是VB的升级版。
对于想从VB转到VB .NET的开发者来说,如果你只是喜欢Basic系列语言的代码风格,那幺你的迁移会很顺利,如果你想沿袭之前VB的编程思想和习惯,你会很苦恼,原因之一就是VB .NET贯穿的是完全面向对象的思想,而VB不是。
微软为使VB开发者更容易转到VB .NET,兼容一些VB6函式和库的用法,但是比不上.NET语言中自带的可替换的函式和库来得高效,所以我们应该儘量使用.NET下的新方法。微软还提供了VB到VB .NET的自动转换器,虽几经改进,但仍无法转换全部代码,几乎所有非小型程式都需要人工修改以完成编译。为了运行最佳化,大多程式需要大量工作去重构。
争议与解释:许多资深的VB程式设计师抱怨VB .NET,因为VB .NET丢掉了许多不再发行的VB6中使用的大量语言constructs和用户界面功能,并且对保留下来的东西也改变了语意。其实不应该再把VB和VB .NET做功能上的比较,因为它们除了有些语法相似外,可以说是完全不同的两种语言。
Visual Basic .NET与VB都代表了Basic系列语言的编码风格,Visual Basic .NET是这种编码风格在.NET平台上的继承,而不是同系列语言VB的沿袭。
语言革命
* 1991年4月,Visual Basic诞生,Visual Basic 1.0 Windows版本发布。这个连线程式语言和用户界面的进步被称为Tripod(有些时候叫做Ruby),最初的设计是由阿兰·库珀(Alan Cooper)完成的。 1992年9月,Visual Basic 1.0 DOS版本发布。
* 1998年夏天,VB6.0发布。
* 2001年,Visual Basic .NET和.NET Framework发布。Visual Basic .NET正式诞生。
* 2005年,微软宣布将不会再对非.NET版本的VB进行支持。
*2010年,Visual Basic .NET随Visual Studio 2010发布,不再提供单独的Visual Basic .NET IDE。
开发
MONO开发平台提供了一个VB.NET特性库(VB.NET-specific libraries)并着手研发一个编译器和Windows Forms GUI 库。由于各方面的原因,VB.NET开发的开源工具较C#发展得慢一些。
转载请注明出处海之美文 » Visual Basic .NET