-
vb.Net编程简介之二
内容:
对Boolean类型数据使用AND/OR/NOT操作
And和Or关键字在Visual Basic.NET和Visual Basic 6.0中的使
用是不同的,在Visual Basic 6.0中,AND运算
既执行逻辑AND操作也执行逐位AND操作,取决于操作数(如果是
Boolean类型,执行逻辑AND操作,如果是数字,执
行逐位AND操作)。在Visual Basic.NET中,AND运算只执行逻辑AND操
作。对于逐位操作,在Visual Basic.NET提供
了一组操作:BitAnd, BitOr, BitNot以及BitXor 。
下面是演示这些差异的范例程序
Dim a As Integer
Dim b As Integer
Dim c As Boolean
a = 1
b = 2
c = a And b
MsgBox ("The answer is " & c)
当上面的代码在Visual Basic 6.0下运行时,结果是False(执行
逐位AND操作);然而在Visual Basic.NET下,
结果是True(执行逻辑AND操作)。
要确定你的程序在升级后也运行结果同升级前一样,Visual
Basic.NET包含了兼容函数VB6.And, VB6.Or以及
VB6.Not,这些函数执行的结果同Visual Basic 6.0下的AND/OR/NOT
操作的执行结果是一样的。当代码升级后,结
果会象下面这样:
Dim a As Short
Dim b As Short
Dim c As Boolean
a = 1
b = 2
c = VB6.And(a, b)
MsgBox ("The answer is " & c)
升级后的代码会得出False的结果,同Visual Basic 6.0下运行一样
如果不想你的代码升级后使用兼容函数,就需要确保你的
AND/OR/NOT都使用在Boolean类型数据的操作中,例
如,如果上面的代码更改为下面的方式:
Dim a As Integer
Dim b As Integer
Dim c As Boolean
a = 1
b = 2
c = a <> 0 And b <> 0
MsgBox ("The answer is " & c)
当升级后,代码同原来的几乎一样:
Dim a As Short
Dim b As Short
Dim c As Boolean
a = 1
b = 2
c = a <> 0 And b <> 0
MsgBox ("The answer is " & c)
同前面不同的是每一个操作都是在Boolean数据之间进行的,因
此它们在Visual Basic 6.0中使用的都是逻辑
AND操作。所以在升级到Visual Basic.NET后不会发生改变。这样做
的意义是你可以直接在Visual Basic.NET和
Visual Basic 6.0之间拷贝和粘贴代码,你的代码会运行的更快因为
使用的是本地的AND操作而不是兼容函数。
另外一个需要考虑的问题是对于函数结果的AND/OR/NOT 操作的
问题,例如下面的范例:
Dim b As Boolean
b = Function1() And Function2()
在Visual Basic 6.0中,Function1和Function2的结果都会执行
后再将结果进行AND操作。在Visual Basic.NET
中,只有当Function1的结果为True时才会计算Function2。因为
Visual Basic.NET中的AND运算执行的是逻辑AND操
作,如果Function1结果为False,AND结果肯定是False,为了加快速
度就不再执行Function2的了。但是如果
Function2另有目的,例如用于避免某些错误,那么就会出现不可预
知的错误,那么上面的代码升级后就会象下面
的样子:
Dim b As Boolean
b = VB6.AND(Function1(), Function2())
为了不在升级代码中出现兼容函数,原来的代码需要做如下的改动:
Dim b As Boolean
Dim c As Boolean
Dim d As Boolean
c = Function1()
d = Function2()
b = c And d
另一个需要注意的是在Visual Basic.NET中,True值将不再是-1
而是1。做这个改变是为了使Visual Basic.NET
能集成在 .NET语言中。因为有这个改变,你需要再你的Visual
Basic 6.0工程中使用常量True而不是-1来表示真
值,使用Boolean类型而不是整数类型变量保存Boolean数据。下面的
代码说明了Visual Basic 6.0和Visual Basic.NET
之间的不同:
Dim i As Integer
i = True
If i = -1 Then
MsgBox ("True")
Else
MsgBox ("False")
End If
在Visual Basic 6.0中,结果为True,而在Visual Basic.NET中结果
为False。
如果对代码做如下改动,程序在两种语言下运行都会显示True
Dim i As Boolean
i = True
If i = True Then
MsgBox ("True")
Else
MsgBox ("False")
End If
通过上面的范例可以看出在程序中需要注意两点:
1、使用常量True和False来判断是否而不要使用0和-1
2、使用Boolean类型变量储存Boolean数值而不要使用Integer类型变
量
如果在你的程序中没有这么做的话,在升级后你还需要做大量的手工
改动
对Boolean类型数据使用AND/OR/NOT操作
And和Or关键字在Visual Basic.NET和Visual Basic 6.0中的使
用是不同的,在Visual Basic 6.0中,AND运算
既执行逻辑AND操作也执行逐位AND操作,取决于操作数(如果是
Boolean类型,执行逻辑AND操作,如果是数字,执
行逐位AND操作)。在Visual Basic.NET中,AND运算只执行逻辑AND操
作。对于逐位操作,在Visual Basic.NET提供
了一组操作:BitAnd, BitOr, BitNot以及BitXor 。
下面是演示这些差异的范例程序
Dim a As Integer
Dim b As Integer
Dim c As Boolean
a = 1
b = 2
c = a And b
MsgBox ("The answer is " & c)
当上面的代码在Visual Basic 6.0下运行时,结果是False(执行
逐位AND操作);然而在Visual Basic.NET下,
结果是True(执行逻辑AND操作)。
要确定你的程序在升级后也运行结果同升级前一样,Visual
Basic.NET包含了兼容函数VB6.And, VB6.Or以及
VB6.Not,这些函数执行的结果同Visual Basic 6.0下的AND/OR/NOT
操作的执行结果是一样的。当代码升级后,结
果会象下面这样:
Dim a As Short
Dim b As Short
Dim c As Boolean
a = 1
b = 2
c = VB6.And(a, b)
MsgBox ("The answer is " & c)
升级后的代码会得出False的结果,同Visual Basic 6.0下运行一样
如果不想你的代码升级后使用兼容函数,就需要确保你的
AND/OR/NOT都使用在Boolean类型数据的操作中,例
如,如果上面的代码更改为下面的方式:
Dim a As Integer
Dim b As Integer
Dim c As Boolean
a = 1
b = 2
c = a <> 0 And b <> 0
MsgBox ("The answer is " & c)
当升级后,代码同原来的几乎一样:
Dim a As Short
Dim b As Short
Dim c As Boolean
a = 1
b = 2
c = a <> 0 And b <> 0
MsgBox ("The answer is " & c)
同前面不同的是每一个操作都是在Boolean数据之间进行的,因
此它们在Visual Basic 6.0中使用的都是逻辑
AND操作。所以在升级到Visual Basic.NET后不会发生改变。这样做
的意义是你可以直接在Visual Basic.NET和
Visual Basic 6.0之间拷贝和粘贴代码,你的代码会运行的更快因为
使用的是本地的AND操作而不是兼容函数。
另外一个需要考虑的问题是对于函数结果的AND/OR/NOT 操作的
问题,例如下面的范例:
Dim b As Boolean
b = Function1() And Function2()
在Visual Basic 6.0中,Function1和Function2的结果都会执行
后再将结果进行AND操作。在Visual Basic.NET
中,只有当Function1的结果为True时才会计算Function2。因为
Visual Basic.NET中的AND运算执行的是逻辑AND操
作,如果Function1结果为False,AND结果肯定是False,为了加快速
度就不再执行Function2的了。但是如果
Function2另有目的,例如用于避免某些错误,那么就会出现不可预
知的错误,那么上面的代码升级后就会象下面
的样子:
Dim b As Boolean
b = VB6.AND(Function1(), Function2())
为了不在升级代码中出现兼容函数,原来的代码需要做如下的改动:
Dim b As Boolean
Dim c As Boolean
Dim d As Boolean
c = Function1()
d = Function2()
b = c And d
另一个需要注意的是在Visual Basic.NET中,True值将不再是-1
而是1。做这个改变是为了使Visual Basic.NET
能集成在 .NET语言中。因为有这个改变,你需要再你的Visual
Basic 6.0工程中使用常量True而不是-1来表示真
值,使用Boolean类型而不是整数类型变量保存Boolean数据。下面的
代码说明了Visual Basic 6.0和Visual Basic.NET
之间的不同:
Dim i As Integer
i = True
If i = -1 Then
MsgBox ("True")
Else
MsgBox ("False")
End If
在Visual Basic 6.0中,结果为True,而在Visual Basic.NET中结果
为False。
如果对代码做如下改动,程序在两种语言下运行都会显示True
Dim i As Boolean
i = True
If i = True Then
MsgBox ("True")
Else
MsgBox ("False")
End If
通过上面的范例可以看出在程序中需要注意两点:
1、使用常量True和False来判断是否而不要使用0和-1
2、使用Boolean类型变量储存Boolean数值而不要使用Integer类型变
量
如果在你的程序中没有这么做的话,在升级后你还需要做大量的手工
改动
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式