`
javasogo
  • 浏览: 1834895 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

变量的声明和作用域——VB

 
阅读更多

一、声明变量

变量在使用前,必须在代码中进行声明,即创建该变量

在使用变量之前,首先需要声明变量。就是说,必须事先告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。

声明变量有两种方式:隐式声明、显式声明。

隐式声明:变量可以不经声明直接使用,此时VB给该变量赋予缺省的类型和值。这种方式比较简单方便,在程序代码中可以随时命名并使用变量,但不易检查。

显式声明:用声明语句创建变量。

强制显式声明变量:

为了避免写错变量名引起的麻烦,用户可以规定,只要遇到一个未经明确声明就当成变量的名字,VB都发出错误警告。方法是----强制显式声明变量。要强制显式声明变量,只须在类模块、窗体模块或标准模块的声明段中加入这条语句:

  Option Explicit

这条语句是用来规定在本模块中所有变量必须先声明再使用,即不能通过隐式声明来创建变量。在添加Option Explicit语句后,VB将自动检查程序中是否有未定义的变量,发现后将显示错误信息。

如果要自动插入Option Explicit语句,用户只要在工具菜单中选取选项命令,然后单击选项对话框中的编辑器选项卡,再选中要求变量声明选项,如下图

这样VB就会在任何新模块中自动插入Option Explicit语句,但只会在新建立的模块中自动插入。所以对于已经建立的模块,只能用手工方法向现有模块添加Option Explicit语句(只有再重新启动VB,这项功能才有效)。

二、变量的作用域

变量的作用域指的是变量的有效范围。为了能正确地使用变量的值,应当明确可以在程序的什么地方访问该变量。VB中变量可以分为3类:局部(Local)变量、模块(Module)变量及全局(Public)变量,其中模块变量包括窗体模块变量和标准模块变量。各变量位于不同的层次。

局部变量

过程级变量只有在声明它们的过程中才能被识别,它们又称为局部变量。

Dim或者Static关键字来声明它们,两者的区别在于:在整个应用程序运行时,用Static声明的局部变量中的值一直存在,而用Dim声明的变量只在过程执行期间才存在。

对任何临时计算来说,局部变量是最佳选择。例如,可以建立十来个不同的过程,每个过程都包含称作intTemp的变量(同一个变量名在不同的过程中意义可能不同)。只要每个intTemp都声明为局部变量,那么每个过程只识别它自己的intTemp版本。任何一个过程都能够改变它自己的局部的intTemp变量的值,而不会影响别的过程中的intTemp变量。

模块变量

按照缺省规定,模块级变量对该模块的所有过程都可用,但对其它模块的代码不可用。可在模块顶部的声明段用PrivateDim关键字声明模块级变量,从而建立模块级变量。例如:

Private intTemp As Integer

在模块级,PrivateDim之间没有什么区别,但Private更好些,因为很容易把它和Public区别开来,使代码更容易理解。

全局变量

为了使模块级的变量在其它模块中也有效,用Public关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明段来声明公用变量。例如

Public intTemp As Integer

注意:不能在过程中声明公用变量,只能在模块的声明段中声明公用变量。


总结以上可知声明语句有如下四种格式,这四种语句创建了不同特性的变量,下面来作详细的介绍:

(I)Dim语句,其格式为:

Dim<变量名>[As<数据类型>]

程序运行时,上述声明在内存中为变量分配空间,并使Visual Basic了解随后要处理数据的数据类型。

Dim语句用于在标准模块(Module)、窗体模块(Form)或过程(Procedure)中定义变量或数组

Dim语句在窗体的过程中声明的变量称为局部变量,其作用域仅局限在本过程内部,过程一旦执行完毕,其值也就消失了。

例如

Dim Number As Integer'声明NumberInteger(整型)变量。

Dim I As Integer,j As Integer,k As Integer'同时声明为整型变量。

Dim AnyValue,MyValue'AnyValueMyValue按缺省情况被声明为Variant类型,同时值被设为Empty(空)。

Dim AnotherVar, Choice As Boolean, BirthDate As Date'在一行中声明多种类型变量,AnotherVarVariant类型,因为它的类型被省略了,Choice为布尔型变量,BirthDate为日期型变量。

(2)Private语句.其格式为:

Private<变量名>[As<数据类型>]

如果要在一个窗体模块的所有过程中共享同一个变量,则应在这个窗体模块的声明段Private语句进行声明.这种变量称为模块级变量,其作用域为整个窗体模块。这就好比是您家里的电话号码,它在您所在的城市是通用的,但出了这个范围就不能单独使用了。

(3)Public语句,其格式为:

Public<变量名>[As<数据类型> ]

用来在标准模块中定义全局变量或数组。如果在标准模块的声明段中用Public关键字来声明模块级变量,那么这个变量的作用域是整个工程,即它会在整个工程的所有模块中有效,这种变量称为全局变量,也称公用变量。这就好比是加了邮政区号的电话号码,在全国范围内通用。

(4)static语句.其格式为:

static<变量名>[As<数据类型>·

局部变量在过程执行结束后其值不能被保留下来,在每一次过程重新执行时,变量会被重新初始化。如果希望在该过程结束之后,还能继续保持过程中局部变量的值,就应该用static关键字将这个变量声明为静态变量。这样,即使过程结束,该静态变量的值也仍然保留着。

例如我们可以为一个窗体编写下面这样一程序,可以对用户在窗体上单击的次数计数并用显示出来。

Private Sub Form_click()

Static I As Integer
I = I + 1
Label1.Caption = I

End Sub

再如:

Private Sub Command1_Click()

Static IntCount As Integer
IntCount = IntCount + 1
Select Case IntCount
Case 1
Command1.Caption = "春眠不觉晓"
Case 2
Command1.Caption = "处处闻啼鸟"
Case 3
Command1.Caption = "夜来风雨声"
Case Else
Command1.Caption = "花落知多少"
IntCount = 0
End Select

End Sub

Static换成Dim,运行一下,连续单击窗体,两者结果的不同显而易见。

注意:就像在过程中不能使用PublicPrivate关键字一样,在模块的声明段中不能使用static关键字,会报错。

定义完变量,初值的问题:

整数:0

浮点数:0.0

字符串:""

VariantEmpty(保留字,关键字)不同与null0Nothing

判断它有没有赋值,就看它的值是不是empty

分享到:
评论

相关推荐

    vb应用程序举例——变量的生命周期

    在编写VB应用程序时,应根据实际需求选择合适的变量类型、作用域和生存期,以实现高效、安全的编程。这个“vb应用程序举例——变量的生命周期”的小程序,无疑是一个很好的实践平台,帮助初学者直观理解这些概念。

    Visual C# .NET 编程经典——从VB6到Visual C# .NET 快速进阶

    《Visual C# .NET 编程经典...通过《Visual C# .NET 编程经典——从VB6到Visual C# .NET 快速进阶》,读者不仅可以全面了解C#语言,还能掌握.NET框架的关键技术和最佳实践,从而顺利地从VB6过渡到现代的C#开发环境。

    VB软件基础教程很详细

    5. 数据类型和变量作用域 VB提供了一系列数据类型,根据变量使用的范围,变量可以是局部变量、模块变量或全局变量。 以上概念构成了VB编程语言的基础,对于初学者来说,理解并掌握这些基础概念对于后续学习至关...

    vb函数大全msn

    - **变量名规则**: 必须以字母开头,在其作用域内唯一,不超过255个字符,且不能包含句点或类型声明字符。 --- #### Array 函数 **功能介绍:** `Array`函数用于创建并初始化一个数组。它返回一个包含数组的`...

    VB中在模块中定义全局函数,在窗体中调用函数的实例——利润表.zip

    在这里定义的函数和变量可以在整个工程中被访问,因为它们具有全局作用域。 - **全局函数**:全局函数是在模块级别定义的函数,可以在程序的任何地方被调用,无需在每个调用位置创建对象实例。定义全局函数时,通常...

    微软一站式编码标准——中文版

    - **变量的声明和初始化**:建议尽早声明并初始化变量,避免未定义的值引发的问题,同时保持变量的作用域尽可能小。 3. **其他规范** - **异常处理**:要求明确处理可能出现的异常情况,使用try-catch-finally...

    零点起飞学Visual Basic之数据块——数组PPT学习教案.pptx

    声明数组时,可以使用`Public`、`Dim`、`Private`或`Static`关键字,它们分别对应不同的作用域和生命周期。例如,`Dim`关键字用于声明局部数组,仅在声明它的窗体或过程内可见;`Public`则声明全局数组,可以在整个...

    vb练习题-电子版第四章数据类型.docx

    变量的作用域决定了变量在程序中的可见性和生命周期。根据定义位置的不同,VB 中的变量可以分为: - **局部变量(Local)**:在过程内部定义的变量,只在该过程中可用。 - **模块变量(Module)**:在模块级定义的变量...

    MAPGIS67二次开发培训教程_VB版_2004

    4. **变量和过程**:深入理解变量的作用域、过程的定义与调用。 5. **控制程序的执行流程**:学习条件语句(如IF...THEN)、循环语句(如FOR...NEXT)等控制结构。 6. **调试**:介绍如何使用断点、监视窗口等工具...

    Visual Basic.net期末上机考试完整版材料(附加代码).doc

    以上内容总结了Visual Basic.net期末上机考试中涉及的一些核心知识点,包括控件属性、变量作用域、程序逻辑控制、变量命名规则、运算符优先级、条件判断、字符串操作、事件处理以及控件事件等。这些知识点对于理解和...

    yuanxiaojun.rar_编译原理

    在VB环境下,这可能涉及到类型检查、变量作用域分析、表达式求值等。通过语义分析,编译器可以确保源代码的逻辑正确性,并生成中间代码或直接的目标代码。 最后,代码生成阶段将中间代码转换为特定机器的机器码。VB...

    VisualBasic解析器.rar

    这包括类型检查、作用域分析、变量和函数的定义与引用一致性验证等。 4. 错误处理:当解析器遇到不符合VB语法规则或逻辑错误的代码时,会生成错误信息,帮助开发者定位并修复问题。 三、Visual Basic解析器的应用 ...

    Visual Basic 2008应用程序开发实例精讲光盘文件.rar

    3. **变量与数据类型**:了解如何声明和使用各种数据类型,如Integer、Double、String等,以及变量的作用域和生命周期。 4. **流程控制**:掌握条件语句(If...Then...Else)、循环结构(For...Next、While...End ...

    Visual Basic 2008程序设计完全自学教程 1/2

    4.4.2 变量的作用域 4.5 数据类型转换 4.5.1 隐式数据类型转换 4.5.2 显示数据类型转换 4.6 Opion语句 4.6.1 OptionExplicit 4.6.2 OptionStrict 4.6.3 OptionCompare 4.6.4 Optionlnfer 4.7 自定义类型Structure与...

    简单的c编译器源码,生成汇编代码

    4. **符号表**:在编译器中,符号表管理着所有标识符的信息,如变量、函数等的类型和作用域。这个简单的C编译器源码包含了完整的符号表管理,确保在编译过程中正确解析和关联标识符。 5. **代码生成**:编译器的...

    C# 完全手册

    - **作用域**:讨论变量的作用域,即变量在何处可以被访问和修改。 #### 5.2 常量 - **定义**:常量是在程序执行过程中其值不会改变的量,一旦定义后不能重新赋值。 - **用途**:用于表示固定的数值或字符串,提高...

    C# ASP.NET JS 学习工作代码积累

    5. **JavaScript基础**:变量、数据类型、作用域、函数、闭包、异步编程(回调、Promise、async/await)。 6. **jQuery**:选择器、DOM操作、事件处理、AJAX请求、动画效果。 7. **HTML/CSS**:页面结构、样式定义...

    Visual Basic 2008程序设计完全自学教程 2/2

    4.4.2 变量的作用域 4.5 数据类型转换 4.5.1 隐式数据类型转换 4.5.2 显示数据类型转换 4.6 Opion语句 4.6.1 OptionExplicit 4.6.2 OptionStrict 4.6.3 OptionCompare 4.6.4 Optionlnfer 4.7 自定义类型Structure与...

    C#程序学习教程

    - **10.2 类的成员**:解释成员变量、方法和属性的作用和区别。 - **10.3 构造函数和析构函数**:介绍构造函数和析构函数的功能及其使用场合。 - **10.4 小结**:总结类的定义和使用。 ##### 第十一章:方法 - **...

Global site tag (gtag.js) - Google Analytics