-
VB.NET与VB6.0的区别
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通常缩写为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)中间语言这回事,但这和”解释性语言“有很大差别。
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的沿袭。
开发
MONO开发平台提供了一个VB.NET特性库(VB.NET-specific libraries)并着手研发一个编译器和Windows Forms GUI 库。由于各方面的原因,VB.NET开发的开源工具较C#发展得慢一些。
语言革命
* 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。
版本历史
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。
语法特性:
关键字
描述
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并返回值:
1
2
3
4
5
6
DimLambdaTest=Function(x)x+1
DimLambdaTest1=Function(x)
Returnx+2
EndFunction
MessageBox.Show(LambdaTest(7))
MessageBox.Show(LambdaTest1(7))
用Sub:
1
2
3
4
5
6
DimLambdaTest=Sub(x)MessageBox.Show(x)
DimLambdaTest1=Sub(x)
MessageBox.Show(x)
EndSub
LambdaTest(7)
LambdaTest1(7)
比起其他语言,Visual Basic .Net用Function和Sub更能直观体现Lambda表达式的本质——匿名方法。
————————————————
版权声明:本文为CSDN博主「mohuanzhen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mohuanzhen/article/details/84907596
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比