Dim 语句

您所在的位置:网站首页 vb编译错误缺少表达式 Dim 语句

Dim 语句

2024-07-12 10:46:42| 来源: 网络整理| 查看: 265

Dim 语句 (Visual Basic) 项目 05/10/2023

声明一个或多个变量并为其分配存储空间。

语法 [ ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ] Dim [ WithEvents ] variablelist 组成部分

attributelist

可选。 请参阅特性列表。

accessmodifier

可选。 可以是以下值之一:

Public

Protected

Friend

专用

Protected Friend

Private Protected

请参阅 Access levels in Visual Basic。

Shared

可选。 请参阅 Shared。

Shadows

可选。 请参阅 Shadows。

Static

可选。 请参阅 Static。

ReadOnly

可选。 请参阅 ReadOnly。

WithEvents

可选。 指定这些是对象变量,它们引用可以引发事件的类的实例。 请参阅 WithEvents。

variablelist

必需。 此语句中声明的变量的列表。

variable [ , variable ... ]

每个 variable 都具有以下语法和部件:

variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With{[ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]

组成部分 说明 variablename 必需。 变量的名称。 请参阅 Declared Element Names。 boundslist 可选。 数组变量各个维度的上下限的列表。 New 可选。 在 Dim 语句运行时创建类的新实例。 datatype 可选。 变量的数据类型。 With 可选。 引入对象初始值设定项列表。 propertyname 可选。 要创建其实例的类中的属性名称。 propinitializer 在 propertyname = 后面是必需的。 进行计算并分配给属性名称的表达式。 initializer 如果未指定 New,则是可选的。 创建变量时进行计算并分配给变量的表达式。 注解

Visual Basic 编译器使用 Dim 语句确定变量的数据类型和其他信息,例如哪些代码可以访问变量。 下面的示例声明一个变量来容纳 Integer 值。

Dim numberOfStudents As Integer

你可以指定任何数据类型或枚举、结构、类或接口的名称。

Dim finished As Boolean Dim monitorBox As System.Windows.Forms.Form

对于引用类型,使用 New 关键字创建由数据类型指定的类或结构的新实例。 如果使用 New,则不使用初始值设定项表达式。 相反,可以向从中创建变量的类的构造函数提供参数(如果需要)。

Dim bottomLabel As New System.Windows.Forms.Label

可以在过程、块、类、结构或模块中声明变量。 不能在源文件、命名空间或接口中声明变量。 有关详细信息,请参阅声明上下文和默认访问级别。

在任何过程外部的模块级别声明的变量是成员变量或字段。 成员变量的作用域是其整个类、结构或模块。 在过程级别声明的变量是局部变量。 局部变量的作用域仅在其过程或块内。

以下访问修饰符用于在过程外声明变量:Public、Protected、Friend、Protected Friend 和 Private。 有关详细信息,请参阅 Visual Basic 中的访问级别。

Dim 关键字是可选的,在指定以下任何修饰符时通常会:Public、Protected、Friend、Protected Friend、Private、Shared、Shadows、Static、ReadOnly 或 WithEvents。

Public maximumAllowed As Double Protected Friend currentUserName As String Private salary As Decimal Static runningTotal As Integer

如果 Option Explicit 为 on(默认值),则编译器要求声明所使用的每个变量。 有关详细信息,请参阅 Option Explicit 语句。

指定初始值

可以在创建变量时向它分配值。 对于值类型,可使用初始值设定项提供要分配给变量的表达式。 表达式的计算结果必须是可在编译时进行计算的常量。

Dim quantity As Integer = 10 Dim message As String = "Just started"

如果指定了初始值设定项,但 As 子句中未指定数据类型,则类型推理用于从初始值设定项推理数据类型。 在下面的示例中,num1 和 num2 均强类型化为整数。 在第二个声明中,类型推理从值 3 推理类型。

' Use explicit typing. Dim num1 As Integer = 3 ' Use local type inference. Dim num2 = 3

类型推理在过程级别进行应用。 它不在类、结构、模块或接口中的过程之外进行应用。 有关类型推理的详细信息,请参阅 Option Infer 语句和本地类型推断。

有关未指定数据类型或初始值设定项时所发生情况的信息,请参阅本主题后面部分的默认数据类型和值。

可以使用对象初始值设定项声明命名类型和匿名类型的实例。 下面的代码创建 Student 类的实例,并使用对象初始值设定项初始化属性。

Dim student1 As New Student With {.First = "Michael", .Last = "Tucker"}

有关对象初始值设定项的详细信息,请参阅如何:使用对象初始值设定项声明对象、对象初始值设定项:命名类型和匿名类型以及匿名类型。

声明多个变量

可以在一个声明语句中声明多个变量,为每个变量指定变量名称,并在每个数组名称后面加上括号。 以逗号分隔多个变量。

Dim lastTime, nextTime, allTimes() As Date

如果使用一个 As 子句声明多个变量,则无法为该变量组提供初始值设定项。

可以通过为声明的每个变量使用单独的 As 子句来为不同的变量指定不同的数据类型。 每个变量都采用在其 variablename 部分后遇到的第一个 As 子句中指定的数据类型。

Dim a, b, c As Single, x, y As Double, i As Integer ' a, b, and c are all Single; x and y are both Double 数组

可以声明一个变量来容纳数组,而数组可以容纳多个值。 若要指定变量容纳数组,请紧跟在其 variablename 后面加上括号。 有关数组的详细信息,请参阅数组。

可以指定数组各个维度的下限和上限。 为此,请在括号内包含 boundslist。 对于每个维度,boundslist 指定上限和(可选)下限。 下限始终为零(无论是否指定)。 每个索引都可以在零到其上限值之间变化。

以下两个语句等效。 每个语句都声明包含 21 个 Integer 个元素的数组。 访问数组时,索引可以在 0 到 20 之间变化。

Dim totals(20) As Integer Dim totals(0 To 20) As Integer

以下语句声明类型为 Double 的二维数组。 数组有 4 行 (3 + 1),每行 6 列 (5 + 1)。 请注意,上限表示索引的最高可能值,而不是维度的长度。 维度的长度是上限加一。

Dim matrix2(3, 5) As Double

数组可以具有 1 到 32 个维度。

可以在数组声明中将所有上下限留空。 如果这样做,则数组具有指定的维度数,但它未初始化。 在初始化至少部分元素之前,其值为 Nothing。 Dim 语句必须为所有维度或不为任何维度指定上下限。

' Declare an array with blank array bounds. Dim messages() As String ' Initialize the array. ReDim messages(4)

如果数组具有多个维度,则必须在括号之间包含逗号以指示维度数。

Dim oneDimension(), twoDimensions(,), threeDimensions(,,) As Byte

可以通过将数组的一个维度声明为 -1 来声明零长度数组。 容纳零长度数组的变量不具有值 Nothing。 某些公共语言运行时函数需要零长度数组。 如果尝试访问此类数组,则会发生运行时异常。 有关详细信息,请参阅 array。

可以使用数组文本初始化数组的值。 为此,请使用大括号 ({}) 将初始化值括起。

Dim longArray() As Long = {0, 1, 2, 3}

对于多维数组,每个单独维度的初始化都括在外部维度内的大括号中。 元素按行主序指定。

Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}}

有关数组文本的详细信息,请参阅数组。

默认数据类型和值

下表描述了指定 Dim 语句中数据类型和初始值设定项的各种组合的结果。

是否指定数据类型? 是否指定初始值设定项? 示例 结果 否 否 Dim qty 如果 Option Strict 为 off(默认值),则变量设置为 Nothing。

如果 Option Strict 处于打开状态,则发生编译时错误。

否 是 Dim qty = 5 如果 Option Infer 为 on(默认值),则变量采用初始值设定项的数据类型。 请参阅本地类型推断。

如果 Option Infer 和 Option Strict 均处于关闭状态,则变量采用 Object 的数据类型。

如果 Option Infer 处于关闭状态但 Option Strict 处于打开状态,则发生编译时错误。

是 否 Dim qty As Integer 将变量初始化为数据类型的默认值。 请参阅本部分后面的表。 是 是 Dim qty As Integer = 5 如果初始值设定项的数据类型不可转换为指定数据类型,则会发生编译时错误。

如果指定了数据类型但未指定初始值设定项,则 Visual Basic 会将变量初始化为其数据类型的默认值。 下表显示默认初始化值。

数据类型 默认值 所有数值类型(包括 Byte 和 SByte) 0 Char 二进制 0 所有引用类型(包括 Object、String 和所有数组) Nothing Boolean False Date 1 年 1 月 1 日凌晨 12:00 (01/01/0001 12:00:00 AM)

结构的每个元素都会进行初始化,如同是单独的变量。 如果声明了数组的长度,但未初始化其元素,则每个元素都会进行初始化,如同是单独的变量。

静态局部变量生存期

Static 局部变量的生存期长于在其中声明它的过程的生存期。 变量生存期的边界取决于声明过程的位置以及它是否为 Shared。

过程声明 变量初始化的时间 变量不再存在的时间 在模块中 第一次调用该过程时 程序停止执行时 在类或结构中,过程为 Shared 第一次对特定实例或是对类或结构自身调用过程 程序停止执行时 在类或结构中,过程不是 Shared 第一次对特定实例调用过程时 释放实例以进行垃圾回收 (GC) 时 属性和修饰符

只能将属性应用于成员变量,而不能应用于局部变量。 属性为程序集的元数据提供信息,这对于局部变量等临时存储没有意义。

在模块级别,无法使用 Static 修饰符声明成员变量。 在过程级别,无法使用 Shared、Shadows、ReadOnly、WithEvents 或任何访问修饰符声明局部变量。

可以通过提供 accessmodifier 来指定哪些代码可以访问变量。 类和模块成员变量(在任何过程之外)默认为专用访问,结构成员变量默认为公共访问。 可以使用访问修饰符调整其访问级别。 不能对局部变量(在过程中)使用访问修饰符。

只能对成员变量指定 WithEvents,不能对过程中的局部变量进行指定。 如果指定 WithEvents,则变量的数据类型必须是特定类类型,而不是 Object。 无法使用 WithEvents 声明数组。 有关事件的详细信息,请参阅事件。

注意

类、结构或模块之外的代码必须使用该类、结构或模块的名称来限定成员变量的名称。 过程或块之外的代码不能引用该过程或块内的任何局部变量。

释放受管理资源

.NET Framework 垃圾回收器会处置受管理资源由 ,而无需你进行额外的编码。 但是,可以强制处置受管理资源,而不是等待垃圾回收器。

如果类占用特别重要的资源(如数据库连接或文件句柄),则你可能不希望等到下一次垃圾回收来清理不再使用的类实例。 类可能会实现 IDisposable 接口,以提供在垃圾回收之前释放资源的方法。 实现该接口的类句公开 Dispose 方法,可以调用该方法以强制立即释放重要资源。

Using 语句会自动执行获取资源、执行一组语句,然后处置资源的过程。 但是,资源必须实现 IDisposable 接口。 有关详细信息,请参阅 Using 语句。

示例 1

下面的示例使用 Dim 语句及各种选项来声明变量。

' Declare and initialize a Long variable. Dim startingAmount As Long = 500 ' Declare a local variable that always retains its value, ' even after its procedure returns to the calling code. Static totalSales As Double ' Declare a variable that refers to an array. Dim highTemperature(31) As Integer ' Declare and initialize an array variable that ' holds four Boolean check values. Dim checkValues() As Boolean = {False, False, True, False} 示例 2

下面的示例列出了介于 1 和 30 之间的素数。 代码注释中介绍了局部变量的作用域。

Public Sub ListPrimes() ' The sb variable can be accessed only ' within the ListPrimes procedure. Dim sb As New System.Text.StringBuilder() ' The number variable can be accessed only ' within the For...Next block. A different ' variable with the same name could be declared ' outside of the For...Next block. For number As Integer = 1 To 30 If CheckIfPrime(number) = True Then sb.Append(number.ToString & " ") End If Next Debug.WriteLine(sb.ToString) ' Output: 2 3 5 7 11 13 17 19 23 29 End Sub Private Function CheckIfPrime(ByVal number As Integer) As Boolean If number < 2 Then Return False Else ' The root and highCheck variables can be accessed ' only within the Else block. Different variables ' with the same names could be declared outside of ' the Else block. Dim root As Double = Math.Sqrt(number) Dim highCheck As Integer = Convert.ToInt32(Math.Truncate(root)) ' The div variable can be accessed only within ' the For...Next block. For div As Integer = 2 To highCheck If number Mod div = 0 Then Return False End If Next Return True End If End Function 示例 3

在下面的示例中,speedValue 变量在类级别进行声明。 Private 关键字用于声明变量。 Car 类中的任何过程都可以访问该变量。

' Create a new instance of a Car. Dim theCar As New Car() theCar.Accelerate(30) theCar.Accelerate(20) theCar.Accelerate(-5) Debug.WriteLine(theCar.Speed.ToString) ' Output: 45 Public Class Car ' The speedValue variable can be accessed by ' any procedure in the Car class. Private speedValue As Integer = 0 Public ReadOnly Property Speed() As Integer Get Return speedValue End Get End Property Public Sub Accelerate(ByVal speedIncrease As Integer) speedValue += speedIncrease End Sub End Class 另请参阅 Const 语句 ReDim 语句 Option Explicit 语句 Option Infer 语句 Option Strict 语句 “项目设计器”->“编译”页 (Visual Basic) 变量声明 数组 对象初始值设定项:命名和匿名类型 匿名类型 对象初始值设定项:命名和匿名类型 如何:使用对象初始值设定项声明对象 局部类型推理


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭