VB.NET 的新特点:变量,类型,数组,属性(2)

页面导航:首页 > 软件编程 > vb.net > VB.NET 的新特点:变量,类型,数组,属性(2)

VB.NET 的新特点:变量,类型,数组,属性(2)

来源: 作者: 时间:2016-02-05 12:32 【

在编译时默认使用Option Strict是Visual Basic.NET的另一个特点。使用了Option Strict后,缩小转换就被禁止了,因为它可能会导致数据或精度的丢失。请看下面的例子:Dim x As Doublex

 

 

在编译时默认使用Option Strict是Visual Basic.NET的另一个特点。使用了Option Strict后,缩小转换就被禁止了,因为它可能会导致数据或精度的丢失。请看下面的例子:

Dim x As Double

x = 20.1

Dim y As Integer

implicit narrowing conversion

y = x doesnt compile under Option Strict

 

这段代码在Visual Basic 6.0可以被编译通过,但在Visual Basic.NET中,如果Option Strict语句被使用,它就不能被编译通过。Option Strict的使用使得程序员必须对应该使用何种类型很清楚。

Dim x As Double

x = 20.1

Dim y As Integer

explicit narrowing conversion

y = CInt(x) compiles under Option Strict

 

另一个很大的变化是现在If语句被优化了。这代表了一个很有价值的最优化,而且现在当把代码移植到Visual Basic.NET时,理解这将如何影响基于Visual Basic 6.0的代码变得很重要。请看下面的代码:

If Function1() And Function2() Then

statement block

End If

 

如果Function1返回了False值,那需要执行Function2以决定是否要执行IfThen中的代码吗?很明显这是不需要的。然而早期版本的Visual Basic并没有像这样优化If语句,在任何情况下Function2都将被执行。VisualBasic.NET实现了优化,因此当Function1返回值为False时,Function2不会被执行。这是另一个使得基于VisualBasic 6.0的代码不能在Visual Basic.NET中正确执行的因素。

 

现在我想谈谈这个语言中在类型安全方面的另一个改进。你应该注意到,如果Function1或Function2返回的值不是Boolean,那么前面的代码不能通过编译。由于类型安全的级别更高了,你不可以用integer类型的值进行条件测试了。比如下面的这段代码,在Visual Basic 6.0中是被经常使用的,但在Visual Basic.NET中却不能通过编译。

Dim x As Integer

set x to 0 for false or anything else for true

If x Then

execute statement block

End If

 

这种由Option Strict带来的新的类型安全级别使得你在使用If和Doloops语句时,必须使用Boolean类型的值,而不能用其它类型的值。

在使用诸如Not、 And、 Or、 Xor等的逻辑比较符时,你也被限制必须使用Boolean类型的值来输入输出。这与在以前版本的VisualBasic中这些比较符既可以用于逻辑比较又可以用于按位比较不同。下面这段代码在VisualBasic 6.0中能正常运行,但在Visual Basic .NET中却不能通过编译。

Dim x As Integer

Dim y As Integer

Dim z As Integer

x = 3

Y = 6

z = x And y doesnt compile

 

Visual Basic.NET提供了四种新的按位比较运算符:BitNot,BitAnd, BitOr, 和BitXor。这些运算符允许你在类型安全的方式下实行按位比较运算。比如,你可以用这些运算符中的一个对两个integer值的每一位来实现OR运算,还可以实现位掩码。下面是使用BitOr和BitAnd的一个例子:

Dim x As Integer = 3

Dim y As Integer = 6

Dim z As Integer

OR bits together

z = x BitOr y z now equals 7

AND to find intersection of bits

z = x BitAnd y z now equal 2

 

设计数组

声明和使用数组的基本语法发生了很大的变化。首先,数组的下界别成了零。你不可以声明一个下界为1的数组。因此,OptionBase语句不再被VisualBasic .NET支持。

 

另外,你在声明一个数组时必须用它的元素个数,而不是它的上界来初始化。这儿是一个例子:

declare an array with 3 elements from 0 to 2

Dim array1(3) As Integer

array1(0) = 2

array1(1) = 4

array1(2) = 8

 

上一段声明如果在Visual Basic 6.0中被使用,这个数组将有四个元素,下标从0到3。而在VisualBasic.NET中,这个数组有三个元素,下标从0到2。在VisualBasic .NET中,如果你的代码企图访问下标为3的数组元素,将引起运行期例外。比如:

index out of range exception

array1(3) = 16

 

Visual Basic.NET为初始化数组提供了一种新的语法。你可以只用一行代码完成数组的声明和初始化。就像这样:

new array initialization syntax

Dim array1 As Integer() = {2, 4, 8}

Visual Basic的早期版本中,你可以用For Each循环遍历一个数组。

Dim x As Integer

For Each x In array1

Console.WriteLine(x)

Next

 

同时,你也可以用For循环和数组长度来遍历一个数组。比如:

Dim i As Integer

For i = 0 To (array1.Length - 1)

Console.WriteLine(array1(i))

Tags:

文章评论


<