Visual Basic/语言
许多计算机语言共享一组核心功能。有时它们在不同的语言中非常相似,有时则截然不同。一种语言的用户认为不可或缺的功能,在其他完全可用的语言中可能完全缺失。
Visual Basic 中的语句就像给计算机发出命令一样。函数和子例程是由语句组成的。
语句通常由一个子例程的名称后跟一个参数列表组成
Debug.Print "Hello World"
第一个词 (Debug) 是 Visual Basic 中内置对象的名称。第二个词 (Print) 是该对象方法的名称。“Hello World” 是该方法的参数。结果是
Hello World
打印到立即窗口。
在 Visual Basic Classic 中,子例程调用语句可以用两种方式编写
x "Hello", "World"
Call x("Hello", "World")
x 是一个接受两个字符串参数的子例程。关键字Call 是 Basic 较早版本遗留下来的。如果您使用这种形式,则必须将整个参数列表括在圆括号中。有时程序员想要调用一个函数,但对返回值不感兴趣,只对副作用感兴趣。在这种情况下,他会像调用子例程一样调用该函数,但只能使用上面的第一种形式。
还有其他更复杂的语句,它们可以跨越多行代码
- If..Else..End If
- Do While..Loop
这些复合语句包括其他语句和表达式。
与大多数编程语言一样,Visual Basic 能够使用和处理命名变量及其内容。变量最简单的描述是,我们用来引用内存中某个位置的名称——一个存储我们正在处理的值的位置。
将变量想象成“鸽笼”或值的占位符通常会有所帮助。您可以将变量视为与其值等效。因此,如果您有一个初始化为 4 的变量i,则i+1 将等于5。
在 Visual Basic 中,变量可以在使用前声明,也可以让编译器为它们分配空间。对于除最简单的程序之外的所有程序,最好声明所有变量。这有几个好处
- 您可以获得所需的类型,而不是Variant。
- 编译器有时可以检查您是否使用了正确的类型。
Visual Basic 中所有变量都是类型化的,即使那些声明为Variant 的变量也是如此。如果您没有指定类型,则编译器将使用 Variant。Variant 变量是可以保存任何类型数据的变量。
以下是如何声明一个整数的示例,我们将其命名为some_number
。
Dim some_number As Integer
您也可以使用一个语句声明多个变量
Dim anumber, anothernumber, yetanothernumber As Integer
这不是一个好主意,因为很容易忘记在 Visual Basic 中,类型名称只适用于紧邻其前的变量名。该示例声明了两个Variants 和一个Integer
您可以通过这个小程序来演示实际情况
Option Explicit
Public Sub main()
Dim anumber, anothernumber, yetanothernumber As Integer
Dim v As Variant
Debug.Print TypeName(anumber), VarType(anumber), _
TypeName(anothernumber), VarType(anothernumber), _
TypeName(yetanothernumber), VarType(yetanothernumber)
Debug.Print TypeName(anumber), VarType(v)
Debug.Print "Assign a number to anumber"
anumber = 1
Debug.Print TypeName(anumber), VarType(anumber)
Debug.Print "Assign a string to anumber"
anumber = "a string"
Debug.Print TypeName(anumber), VarType(anumber)
End Sub
结果是
Empty 0 Empty 0 Integer 2 Empty 0 Assign a number to anumber Integer 2 Assign a string to anumber String 8
请注意,VarType 和 TypeName 都返回有关存储在 Variant 内部的变量的信息,而不是有关 Variant 本身的信息。
因此,要依次声明三个整数,请使用
Dim anumber As Integer, anothernumber As Integer, yetanothernumber As Integer
在 Visual Basic 中,无法将声明和初始化与变量结合起来(因为 VB 不支持构造函数——尽管请参阅对象和初始化),以下语句是非法的
Dim some_number As Integer = 3
只有常量声明允许您这样做
Const some_number As Integer = 3
在 Visual Basic 中,变量可以在子例程、函数或属性的内部任何地方声明,它们的范围限于该例程。它们也可以在模块的声明部分声明,该部分位于任何子例程、函数或属性之前,它们具有模块级范围。
默认情况下,变量无需在使用前声明。以这种方式创建的任何变量都将是Variant 类型。这种行为可以通过在模块顶部使用 Option Explicit 语句来覆盖,这将强制程序员在使用前声明所有变量。
声明变量后,您可以使用以下语句稍后为变量赋值
Let some_number = 3
Let 关键字是可选的,因此
some_number = 3
也是一个有效的语句。
您还可以将一个变量赋值给另一个变量,如下所示
anumber = anothernumber
在 Visual Basic 中,您无法使用一个语句为多个变量赋相同的值。以下语句不会像 C 程序员期望的那样工作
anumber = anothernumber = yetanothernumber = 3
相反,它将除第一个= 符号之外的所有= 符号视为等式测试运算符,然后根据anothernumber 和yetanotherniumber 的值,将True 或False 分配给anumber。
Visual Basic 中的变量名由字母(大写和小写)和数字组成。下划线字符“_”也被允许。名称不能以数字开头。名称可以任意长。
一些有效的(但不太描述性的)Visual Basic 变量名的示例
foo Bar BAZ foo_bar a_foo42_ QuUx
一些无效的 Visual Basic 变量名的示例
- 2foo
- 不能以数字开头
- my foo
- 名称中不允许使用空格
- $foo
- $ 不允许——只能使用字母、数字和 _
- while
- 语言关键字不能用作名称
- _xxx
- 不允许使用前导下划线。
某些词是语言中的保留关键字,这些词不能用作变量名,也不能用作其他任何事物的名称。
此外,还有一些名称集,虽然不是语言关键字,但出于某种原因被保留。
变量的命名规则也适用于其他语言结构,例如函数名和模块名。
养成使用描述性变量名的习惯是一个好习惯。如果您在创建代码的几个月后查看一段代码,并看到变量var1
、var2
等,您很可能不知道它们控制什么。诸如textinput
或time_start
之类的变量名更具描述性——您确切地知道它们的作用。如果您的变量名包含多个单词,则习惯上用大写字母开始下一个单词。请记住,您不能在变量名中使用空格,合理的首字母大写更易于区分单词。稍后在代码中键入变量名时,您可以全部使用小写——一旦您离开相关行,如果变量名是有效的 VB,它将根据需要大写。
在程序中,您显式指定值而不是引用变量或其他形式的数据,该值被称为字面量。在上面的初始化示例中,3 是一个字面量。数字可以写成整数、小数、“科学”表示法或十六进制。要识别十六进制数,只需在数字前面加上 &H。
条件子句是仅在特定表达式(条件)为真时才会执行的代码块。
If 语句是最灵活的条件语句:请参阅 分支
通常,需要将一个特定变量与多个值进行比较。对于这种条件表达式,使用Select Case 语句。
无条件语句 允许您在没有条件的情况下更改程序的流程。这些语句包括 Exit、End 和 Goto 语句。
循环 允许您将一组语句重复执行多次。
要重复执行一段代码一定的次数,或者对列表中的每个元素执行一次,请参阅 For..Next 循环
上一节:案例研究 | 目录 | 下一节:编码规范 |