VB.Net - 快速指南


VB.Net - 概述

Visual Basic .NET (VB.NET) 是一种在 .NET Framework 上实现的面向对象的计算机编程语言。虽然它是经典 Visual Basic 语言的演变,但它不向后兼容 VB6,并且旧版本编写的任何代码都不能在 VB.NET 下编译。

与所有其他 .NET 语言一样,VB.NET 完全支持面向对象的概念。VB.NET 中的一切都是对象,包括所有基本类型(Short、Integer、Long、String、Boolean 等)和用户定义类型、事件,甚至程序集。所有对象都继承自基类Object。

VB.NET是由微软的.NET框架实现的。因此,它可以完全访问.Net Framework 中的所有库。还可以在 Mono(.NET 的开源替代品)上运行 VB.NET 程序,不仅可以在 Windows 下运行,甚至可以在 Linux 或 Mac OSX 下运行。

以下原因使 VB.Net 成为广泛使用的专业语言 -

  • 现代、通用。

  • 面向对象。

  • 面向组件。

  • 简单易学。

  • 结构化语言。

  • 它产生高效的程序。

  • 它可以在多种计算机平台上编译。

  • .Net 框架的一部分。

强大的编程功能 VB.Net

VB.Net 拥有众多强大的编程功能,使其受到全球众多程序员的喜爱。让我们提一下其中一些功能 -

  • 布尔条件

  • 自动垃圾收集

  • 标准库

  • 程序集版本控制

  • 属性和事件

  • 代表和活动管理

  • 易于使用的泛型

  • 索引器

  • 条件编译

  • 简单的多线程

VB.Net - 环境设置

在本章中,我们将讨论可用于创建 VB.Net 应用程序的工具。

我们已经提到VB.Net是.Net框架的一部分,用于编写.Net应用程序。因此,在讨论运行 VB.Net 程序的可用工具之前,让我们先了解一下 VB.Net 与 .Net 框架的关系。

.Net框架

.Net 框架是一个革命性的平台,可以帮助您编写以下类型的应用程序 -

  • Windows应用程序

  • 网络应用程序

  • 网页服务

.Net框架应用程序是多平台应用程序。该框架的设计方式使其可以从以下任何语言中使用:Visual Basic、C#、C++、Jscript 和 COBOL 等。

所有这些语言都可以访问框架并相互通信。

.Net 框架由一个巨大的代码库组成,供 VB.Net 等客户端语言使用。这些语言使用面向对象的方法。

以下是 .Net 框架的一些组件 -

  • 公共语言运行时 (CLR)

  • .Net Framework 类库

  • 通用语言规范

  • 通用类型系统

  • 元数据和程序集

  • Windows 窗体

  • ASP.Net 和 ASP.Net AJAX

  • ADO网络

  • Windows 工作流基础 (WF)

  • Windows 演示基础

  • Windows 通信基础 (WCF)

  • LINQ

有关每个组件执行的作业,请参阅ASP.Net - 简介,有关每个组件的详细信息,请参阅 Microsoft 的文档。

VB.Net 集成开发环境 (IDE)

Microsoft 为 VB.Net 编程提供以下开发工具 -

  • Visual Studio 2010(VS)

  • Visual Basic 2010 Express (VBE)

  • 可视化网络开发人员

最后两个是免费的。使用这些工具,您可以编写各种VB.Net程序,从简单的命令行应用程序到更复杂的应用程序。Visual Basic Express 和 Visual Web Developer Express 版本是 Visual Studio 的精简版本,具有相同的外观和感觉。它们保留了 Visual Studio 的大部分功能。在本教程中,我们使用了 Visual Basic 2010 Express 和 Visual Web Developer(针对 Web 编程章节)。

您可以从这里下载。它会自动安装在您的计算机中。请注意,您需要有效的互联网连接才能安装精简版。

在 Linux 或 Mac OS 上编写 VB.Net 程序

尽管 .NET Framework 在 Windows 操作系统上运行,但还有一些可在其他操作系统上运行的替代版本。Mono 是 .NET Framework 的开源版本,其中包含 Visual Basic 编译器并可在多种操作系统上运行,包括各种版本的 Linux 和 Mac OS。最新版本是 VB 2012。

Mono 声称的目的不仅是能够跨平台运行 Microsoft .NET 应用程序,而且还为 Linux 开发人员带来更好的开发工具。Mono 可以在许多操作系统上运行,包括 Android、BSD、iOS、Linux、OS X、Windows、Solaris 和 UNIX。

VB.Net - 程序结构

在学习 VB.Net 编程语言的基本构建块之前,让我们看一下最基本的 VB.Net 程序结构,以便我们可以将其作为后续章节的参考。

VB.Net Hello World 示例

VB.Net 程序基本上由以下部分组成 -

  • 命名空间声明

  • 一个类或模块

  • 一项或多项程序

  • 变量

  • 主要程序

  • 陈述和表达式

  • 评论

让我们看一个简单的代码,它将打印“Hello World”一词 -

Imports System
Module Module1
   'This program will display Hello World 
   Sub Main()
      Console.WriteLine("Hello World")
      Console.ReadKey()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

Hello, World!

让我们看看上面程序的各个部分 -

  • 程序Imports System的第一行用于在程序中包含 System 命名空间。

  • 下一行有一个Module声明,即模块Module1。VB.Net 是完全面向对象的,因此每个程序都必须包含一个类的模块,其中包含程序使用的数据和过程。

  • 类或模块通常包含多个过程。过程包含可执行代码,或者换句话说,它们定义类的Behave。程序可以是以下任何一个 -

    • 功能

    • 操作员

    • 得到

    • 添加处理程序

    • 删除处理程序

    • 引发事件

  • 下一行(“这个程序”)将被编译器忽略,它已被添加到程序中添加附加注释。

  • 下一行定义了 Main 过程,它是所有 VB.Net 程序的入口点。Main 过程说明了模块或类在执行时将执行的操作。

  • Main 过程用语句指定其Behave

    Console.WriteLine("Hello World") WriteLine是System命名空间中定义的Console类的方法。该语句产生消息“Hello, World!” 要显示在屏幕上。

  • 最后一行Console.ReadKey()适用于 VS.NET 用户。这将阻止从 Visual Studio .NET 启动程序时屏幕快速运行和关闭。

编译并执行VB.Net程序

如果您使用 Visual Studio.Net IDE,请执行以下步骤 -

  • 启动 Visual Studio。

  • 在菜单栏上,选择“文件”→“新建”→“项目”。

  • 从模板中选择 Visual Basic

  • 选择控制台应用程序。

  • 使用“浏览”按钮指定项目的名称和位置,然后选择“确定”按钮。

  • 新项目出现在解决方案资源管理器中。

  • 在代码编辑器中编写代码。

  • 单击“运行”按钮或 F5 键来运行该项目。将出现一个命令提示符窗口,其中包含“Hello World”行。

您可以使用命令行而不是 Visual Studio IDE 来编译 VB.Net 程序 -

  • 打开文本编辑器并添加上述代码。

  • 将文件另存为helloworld.vb

  • 打开命令提示符工具并转到保存文件的目录。

  • 输入vbc helloworld.vb并按 Enter 编译代码。

  • 如果代码中没有错误,命令提示符将带您进入下一行并生成helloworld.exe可执行文件。

  • 接下来,输入helloworld来执行您的程序。

  • 您将能够在屏幕上看到“Hello World”。

VB.Net - 基本语法

VB.Net 是一种面向对象的编程语言。在面向对象的编程方法中,程序由通过动作相互交互的各种对象组成。对象可能采取的操作称为方法。同类对象被称为具有相同类型,或者更常见的是,被称为属于同一类。

当我们考虑 VB.Net 程序时,它可以定义为通过调用彼此的方法进行通信的对象的集合。现在让我们简单地了解一下类、对象、方法和实例变量的含义。

  • 对象- 对象具有状态和Behave。示例:狗有状态 - 颜色、名称、品种以及Behave - 摇摆、吠叫、进食等。对象是类的实例。

  • - 类可以定义为模板/蓝图,描述其类型的对象支持的Behave/状态。

  • 方法- 方法基本上是一种Behave。一个类可以包含许多方法。在方法中编写逻辑、操作数据并执行所有操作。

  • 实例变量- 每个对象都有其唯一的实例变量集。对象的状态是由分配给这些实例变量的值创建的。

VB.Net 中的矩形类

例如,让我们考虑一个 Rectangle 对象。它具有长度和宽度等属性。根据设计,可能需要接受这些属性的值、计算面积和显示细节的方法。

让我们看一下 Rectangle 类的实现,并根据我们的观察讨论 VB.Net 基本语法 -

Imports System
Public Class Rectangle
   Private length As Double
   Private width As Double

   'Public methods
   Public Sub AcceptDetails()
      length = 4.5
      width = 3.5
   End Sub

   Public Function GetArea() As Double
      GetArea = length * width
   End Function
   Public Sub Display()
      Console.WriteLine("Length: {0}", length)
      Console.WriteLine("Width: {0}", width)
      Console.WriteLine("Area: {0}", GetArea())

   End Sub

   Shared Sub Main()
      Dim r As New Rectangle()
      r.Acceptdetails()
      r.Display()
      Console.ReadLine()
   End Sub
End Class

当上面的代码被编译并执行时,它会产生以下结果 -

Length: 4.5
Width: 3.5
Area: 15.75

在上一章中,我们创建了一个包含代码的 Visual Basic 模块。Sub Main表示VB.Net程序的入口点。在这里,我们使用包含代码和数据的类。您使用类来创建对象。例如,在代码中,r是一个矩形对象。

对象是类的实例 -

Dim r As New Rectangle()

如果指定的话,类可以具有可从外部类访问的成员。数据成员称为字段,过程成员称为方法。

无需创建类的对象即可调用共享方法或静态方法。实例方法是通过类的对象调用的 -

Shared Sub Main()
   Dim r As New Rectangle()
   r.Acceptdetails()
   r.Display()
   Console.ReadLine()
End Sub

身份标识

标识符是用于标识类、变量、函数或任何其他用户定义项的名称。VB.Net 中类命名的基本规则如下:

  • 名称必须以字母开头,后跟一系列字母、数字 (0 - 9) 或下划线。标识符中的第一个字符不能是数字。

  • 它不得包含任何嵌入的空格或符号,例如?- +!@#%^&*()[]{}。; : " ' / 和 \。但是,可以使用下划线 (_)。

  • 它不应该是保留关键字。

VB.Net 关键字

下表列出了 VB.Net 保留关键字 -

添加处理程序 地址 别名 并且 作为 布尔值
通过引用 字节 拜尔 称呼 案件 抓住 CBool
字节 查尔 日期 CDEC CDb 查尔 内特
班级 CLng 对象 常量 继续 CS字节 C短
CSng CStr C型 CUInt CULng CU短 日期
十进制 宣布 默认 代表 暗淡 直播
双倍的 每个 别的 否则如果 结尾 万一 枚举
擦除 错误 事件 出口 错误的 最后 为了
朋友 功能 得到 获取类型 获取XML命名空间 全球的
手柄 如果 实施 进口 继承 整数
界面 不是 喜欢 长的
环形 模组 模块 必须继承 必须覆盖 我的基地
我的课 命名空间 缩小范围 新的 下一个 不是 没有什么
不可继承 不可重写 目的 操作员 选项
选修的 或者 要不然 重载 可重写 覆盖 参数数组
部分的 私人的 财产 受保护 民众 引发事件 只读
重新调暗 快速眼动睡眠 删除处理程序 恢复 返回 字节 选择
阴影 共享 短的 单身的 静止的
停止 细绳 结构 同步锁 然后
真的 尝试 试播 类型 U整数 尽管
加宽 随事件 只写 异或

VB.Net - 数据类型

数据类型是指用于声明不同类型的变量或函数的广泛系统。变量的类型决定了它在存储中占用多少空间以及如何解释存储的位模式。

VB.Net 中可用的数据类型

VB.Net 提供了广泛的数据类型。下表显示了所有可用的数据类型 -

数据类型 存储分配 值范围
布尔值 取决于实施平台 真是
字节 1字节 0 到 255(无符号)
查尔 2字节 0 到 65535(无符号)
日期 8字节 0001 年 1 月 1 日 0:00:00(午夜)至 9999 年 12 月 31 日晚上 11:59:59
十进制 16字节 0 到 +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9...E+28),无小数点;0 到 +/-7.9228162514264337593543950335,小数点右边 28 位
双倍的 8字节

-1.79769313486231570E+308 到 -4.94065645841246544E-324,对于负值

4.94065645841246544E-324 到 1.79769313486231570E+308,对于正值

整数 4字节 -2,147,483,648 至 2,147,483,647(签名)
长的 8字节 -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807(签名)
目的

32位平台上4字节

64位平台上8字节

任何类型都可以存储在 Object 类型的变量中
字节 1字节 -128 到 127(签名)
短的 2字节 -32,768 至 32,767(签名)
单身的 4字节

-3.4028235E+38 到 -1.401298E-45(负值);

1.401298E-45 到 3.4028235E+38(正值)

细绳 取决于实施平台 0 到大约 20 亿个 Unicode 字符
U整数 4字节 0 到 4,294,967,295(无符号)
乌龙 8字节 0 到 18,446,744,073,709,551,615(无符号)
用户自定义 取决于实施平台 该结构的每个成员都有一个由其数据类型确定的范围,并且与其他成员的范围无关
美短 2字节 0 到 65,535(无符号)

例子

以下示例演示了某些类型的使用 -

Module DataTypes
   Sub Main()
      Dim b As Byte
      Dim n As Integer
      Dim si As Single
      Dim d As Double
      Dim da As Date
      Dim c As Char
      Dim s As String
      Dim bl As Boolean
      
      b = 1
      n = 1234567
      si = 0.12345678901234566
      d = 0.12345678901234566
      da = Today
      c = "U"c
      s = "Me"
      
      If ScriptEngine = "VB" Then
         bl = True
      Else
         bl = False
      End If
      
      If bl Then
         'the oath taking
         Console.Write(c & " and," & s & vbCrLf)
         Console.WriteLine("declaring on the day of: {0}", da)
         Console.WriteLine("We will learn VB.Net seriously")
         Console.WriteLine("Lets see what happens to the floating point variables:")
         Console.WriteLine("The Single: {0}, The Double: {1}", si, d)
      End If
      Console.ReadKey()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

U and, Me
declaring on the day of: 12/4/2012 12:00:00 PM
We will learn VB.Net seriously
Lets see what happens to the floating point variables:
The Single:0.1234568, The Double: 0.123456789012346

VB.Net 中的类型转换函数

VB.Net 提供以下内联类型转换函数 -

先生。 功能及说明
1

CBool​​(表达式)

将表达式转换为布尔数据类型。

2

CByte(表达式)

将表达式转换为字节数据类型。

3

CChar(表达式)

将表达式转换为 Char 数据类型。

4

CDate(表达式)

将表达式转换为日期数据类型

5

CDbl(表达式)

将表达式转换为 Double 数据类型。

6

CDec(表达式)

将表达式转换为 Decimal 数据类型。

7

CInt(表达式)

将表达式转换为整数数据类型。

8

CLng(表达式)

将表达式转换为 Long 数据类型。

9

CObj(表达式)

将表达式转换为对象类型。

10

CSByte(表达式)

将表达式转换为 SByte 数据类型。

11

Cshort(表达式)

将表达式转换为短数据类型。

12

CSng(表达式)

将表达式转换为单一数据类型。

13

CStr(表达式)

将表达式转换为字符串数据类型。

14

CUInt(表达式)

将表达式转换为 UInt 数据类型。

15

CULng(表达式)

将表达式转换为 ULng 数据类型。

16

CUshort(表达式)

将表达式转换为 UShort 数据类型。

例子

以下示例演示了其中一些功能 -

Module DataTypes
   Sub Main()
      Dim n As Integer
      Dim da As Date
      Dim bl As Boolean = True
      n = 1234567
      da = Today
      
      Console.WriteLine(bl)
      Console.WriteLine(CSByte(bl))
      Console.WriteLine(CStr(bl))
      Console.WriteLine(CStr(da))
      Console.WriteLine(CChar(CChar(CStr(n))))
      Console.WriteLine(CChar(CStr(da)))
      Console.ReadKey()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

True
-1
True
12/4/2012
1
1

VB.Net - 变量

变量只不过是我们的程序可以操作的存储区域的名称。VB.Net中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局;该内存中可以存储的值的范围;以及可以应用于变量的操作集。

我们已经讨论了各种数据类型。VB.Net 中提供的基本值类型可分为:

类型 例子
整体型 SByte、Byte、Short、UShort、Integer、UInteger、Long、ULong 和 Char
浮点类型 单人和双人
小数类型 十进制
布尔类型 True 或 False 值,如指定的那样
日期类型 日期

VB.Net 还允许定义其他值类型的变量(如Enum)和变量的引用类型(如Class)。我们将在后续章节中讨论日期类型和类。

VB.Net 中的变量声明

Dim语句用于一个或多个变量的变量声明和存储分配Dim 语句用于模块、类、结构、过程或块级别。

VB.Net 中变量声明的语法是 -

[ < attributelist > ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]]
[ ReadOnly ] Dim [ WithEvents ] variablelist

在哪里,

  • attributelist是适用于变量的属性列表。选修的。

  • accessmodifier定义变量的访问级别,其值为 - Public、Protected、Friend、Protected Friend 和 Private。选修的。

  • Shared声明一个共享变量,该变量不与类或结构的任何特定实例关联,而是可供该类或结构的所有实例使用。选修的。

  • 阴影表示变量重新声明并隐藏基类中的同名元素或重载元素集。选修的。

  • 静态表示变量将保留其值,即使在声明它的过程终止后也是如此。选修的。

  • ReadOnly表示该变量可以读取,但不能写入。选修的。

  • WithEvents指定该变量用于响应分配给该变量的实例引发的事件。选修的。

  • Variablelist提供声明的变量列表。

变量列表中的每个变量都具有以下语法和部分 -

variablename[ ( [ boundslist ] ) ] [ As [ New ] datatype ] [ = initializer ]

在哪里,

  • 变量名- 是变量的名称

  • boundslist - 可选。它提供数组变量每个维度的边界列表。

  • -可选。当 Dim 语句运行时,它会创建该类的一个新实例。

  • datatype - 如果 Option Strict 开启则必需。它指定变量的数据类型。

  • 初始化器- 如果未指定 New 则可选。创建变量时计算并分配给该变量的表达式。

一些有效的变量声明及其定义如下所示 -

Dim StudentID As Integer
Dim StudentName As String
Dim Salary As Double
Dim count1, count2 As Integer
Dim status As Boolean
Dim exitButton As New System.Windows.Forms.Button
Dim lastTime, nextTime As Date

VB.Net 中的变量初始化

变量通过等号后跟常量表达式来初始化(分配值)。初始化的一般形式是 -

variable_name = value;

例如,

Dim pi As Double
pi = 3.14159

您可以在声明时初始化变量,如下所示 -

Dim StudentID As Integer = 100
Dim StudentName As String = "Bill Smith"

例子

尝试以下使用各种类型变量的示例 -

Module variablesNdataypes
   Sub Main()
      Dim a As Short
      Dim b As Integer
      Dim c As Double
      
      a = 10
      b = 20
      c = a + b
      Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c)
      Console.ReadLine()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

a = 10, b = 20, c = 30

接受用户的值

System命名空间中的Console类提供了一个函数ReadLine,用于接受用户的输入并将其存储到变量中。例如,

Dim message As String
message = Console.ReadLine

下面的例子演示了它 -

Module variablesNdataypes
   Sub Main()
      Dim message As String
      Console.Write("Enter message: ")
      message = Console.ReadLine
      Console.WriteLine()
      Console.WriteLine("Your Message: {0}", message)
      Console.ReadLine()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果(假设用户输入 Hello World) -

Enter message: Hello World   
Your Message: Hello World

左值和右值

有两种表达方式 -

  • 左值- 作为左值的表达式可以显示为赋值的左侧或右侧。

  • 右值- 作为右值的表达式可以出现在赋值的右侧,但不能出现在左侧。

变量是左值,因此可能出现在赋值的左侧。数字文字是右值,因此不能被赋值,也不能出现在左侧。以下是有效的声明 -

Dim g As Integer = 20

但以下不是有效的语句,会生成编译时错误 -

20 = g

VB.Net - 常量和枚举

常量指程序在执行过程中不得更改的固定值。这些固定值也称为文字。

常量可以是任何基本数据类型,例如整型常量、浮点常量、字符常量或字符串文字。还有枚举常量。

常量的处理方式与常规变量一样,只是它们的值在定义后不能修改。

枚举是一组命名的整数常量

声明常量

在 VB.Net 中,常量是使用Const语句声明的。Const 语句在模块、类、结构、过程或块级别使用,以代替文字值。

Const 语句的语法是 -

[ < attributelist > ] [ accessmodifier ] [ Shadows ] 
Const constantlist

在哪里,

  • attributelist - 指定应用于常量的属性列表;您可以提供多个属性,并用逗号分隔。选修的。

  • accessmodifier - 指定哪些代码可以访问这些常量。选修的。值可以是以下任一值:Public、Protected、Friend、Protected Friend 或 Private。

  • 阴影- 这使得常量隐藏基类中同名的编程元素。选修的。

  • Constantlist - 给出声明的常量名称列表。必需的。

其中,每个常量名称都具有以下语法和部分 -

constantname [ As datatype ] = initializer
  • Constantname - 指定常量的名称

  • datatype - 指定常量的数据类型

  • 初始化器- 指定分配给常量的值

例如,

'The following statements declare constants.'
Const maxval As Long = 4999
Public Const message As String = "HELLO" 
Private Const piValue As Double = 3.1415

例子

以下示例演示了常量值的声明和使用 -

Module constantsNenum
   Sub Main()
      Const PI = 3.14149
      Dim radius, area As Single
      radius = 7
      area = PI * radius * radius
      Console.WriteLine("Area = " & Str(area))
      Console.ReadKey()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

Area = 153.933

在 VB.Net 中打印和显示常量

VB.Net 提供以下打印和显示常量 -

先生。 常数及说明
1

铬铬

回车/换行字符组合。

2

回车符。

3

病毒

换行符。

4

vb换行符

换行符。

5

vb空字符

空字符。

6

vb空字符串

与零长度字符串 ("") 不同;用于调用外部过程。

7

vb对象错误

错误号码。用户定义的错误编号应大于该值。例如:Err.Raise(Number) = vbObjectError + 1000

8

选项卡

制表符。

9

VB返回

退格字符。

声明枚举

枚举类型是使用Enum语句声明的。Enum 语句声明一个枚举并定义其成员的值。Enum 语句可以在模块、类、结构、过程或块级别使用。

Enum 语句的语法如下 -

[ < attributelist > ] [ accessmodifier ]  [ Shadows ] 
Enum enumerationname [ As datatype ] 
   memberlist
End Enum

在哪里,

  • attributelist - 指应用于变量的属性列表。选修的。

  • accessmodifier - 指定哪些代码可以访问这些枚举。选修的。值可以是以下任一值:Public、Protected、Friend 或 Private。

  • 阴影- 这使得枚举隐藏基类中具有相同名称的编程元素。选修的。

  • enumerationname - 枚举的名称。必需的

  • datatype - 指定枚举及其所有成员的数据类型。

  • memberlist - 指定在此语句中声明的成员常量列表。必需的。

成员列表中的每个成员都具有以下语法和部分:

[< attribute list >] member name [ = initializer ]

在哪里,

  • name - 指定成员的名称。必需的。

  • 初始化器- 分配给枚举成员的值。选修的。

例如,

Enum Colors
   red = 1
   orange = 2
   yellow = 3
   green = 4
   azure = 5
   blue = 6
   violet = 7
End Enum

例子

以下示例演示了枚举变量Colors的声明和使用-

Module constantsNenum
   Enum Colors
      red = 1
      orange = 2
      yellow = 3
      green = 4
      azure = 5
      blue = 6
      violet = 7
   End Enum
   
   Sub Main()
      Console.WriteLine("The Color Red is : " & Colors.red)
      Console.WriteLine("The Color Yellow is : " & Colors.yellow)
      Console.WriteLine("The Color Blue is : " & Colors.blue)
      Console.WriteLine("The Color Green is : " & Colors.green)
      Console.ReadKey()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

The Color Red is: 1
The Color Yellow is: 3
The Color Blue is: 6
The Color Green is: 4

VB.Net - 修饰符

修饰符是与任何编程元素一起添加的关键字,以特别强调编程元素的Behave方式或在程序中的访问方式。

例如,访问修饰符:Public、Private、Protected、Friend、Protected Friend 等,指示编程元素(如变量、常量、枚举或类)的访问级别。

VB.Net 中可用修饰符列表

下表提供了 VB.Net 修饰符的完整列表 -

先生编号 修饰符 描述
1 安西 指定 Visual Basic 应将所有字符串封送为美国国家标准协会 (ANSI) 值,无论声明的外部过程的名称如何。
2 集会 指定源文件开头的属性应用于整个程序集。
3 异步 指示它修改的方法或 lambda 表达式是异步的。此类方法称为异步方法。异步方法的调用者可以恢复其工作,而无需等待异步方法完成。
4 汽车 Declare 语句中的charsetmodifier部分提供在调用外部过程期间用于封送字符串的字符集信息它还会影响 Visual Basic 在外部文件中搜索外部过程名称的方式。Auto 修饰符指定 Visual Basic 应根据 .NET Framework 规则封送字符串。
5 通过引用 指定参数通过引用传递,即被调用的过程可以更改调用代码中参数下的变量的值。它在以下情况下使用 -
  • 声明声明
  • 功能声明
  • 子声明
6 拜尔 指定参数的传递方式使得被调用的过程或属性无法更改调用代码中该参数下的变量的值。它在以下情况下使用 -
  • 声明声明
  • 功能声明
  • 运营商声明
  • 财产声明
  • 子声明
7 默认 将属性标识为其类、结构或接口的默认属性。
8 朋友

指定可以从包含其声明的程序集中访问一个或多个已声明的编程元素,而不仅仅是声明它们的组件。

Friend 访问通常是应用程序编程元素的首选级别,Friend 是接口、模块、类或结构的默认访问级别。

9 它用于通用接口和委托。
10 迭代器 指定函数或 Get 访问器是迭代器。迭代器对集合执行自定义迭代。
11 钥匙 Key 关键字使您能够指定匿名类型的属性的Behave。
12 模块 指定源文件开头的属性适用于当前的程序集模块。它与 Module 语句不同。
13 必须继承 指定类只能用作基类,并且不能直接从它创建对象。
14 必须覆盖 指定属性或过程未在此类中实现,并且必须在派生类中重写才能使用。
15 缩小范围 指示转换运算符 (CType) 将类或结构转换为可能无法保存原始类或结构的某些可能值的类型。
16 不可继承 指定类不能用作基类。
17 号 不可重写 指定不能在派生类中重写属性或过程。
18 选修的 指定调用过程时可以省略过程参数。
19 出去 对于泛型类型参数,Out 关键字指定该类型是协变的。
20 重载 指定属性或过程重新声明一个或多个具有相同名称的现有属性或过程。
21 可重写 指定属性或过程可以被派生类中同名的属性或过程覆盖。
22 覆盖 指定属性或过程重写从基类继承的同名属性或过程。
23 参数数组 ParamArray 允许您向过程传递任意数量的参数。ParamArray 参数始终使用 ByVal 进行声明。
24 部分的 指示类或结构声明是类或结构的部分定义。
25 私人的 指定一个或多个声明的编程元素只能从其声明上下文中访问,包括从任何包含的类型中访问。
26 受保护 指定一个或多个声明的编程元素只能从它们自己的类或派生类中访问。
27 民众 指定一个或多个声明的编程元素没有访问限制。
28 只读 指定变量或属性可以读取但不能写入。
29 阴影 指定已声明的编程元素重新声明并隐藏基类中的同名元素或重载元素集。
30 共享 指定一个或多个声明的编程元素与整个类或结构相关联,而不是与该类或结构的特定实例相关联。
31 静止的 指定一个或多个声明的局部变量在声明它们的过程终止后继续存在并保留其最新值。
32 统一码 指定 Visual Basic 应将所有字符串封送为 Unicode 值,无论声明的外部过程的名称如何。
33 加宽 指示转换运算符 (CType) 将类或结构转换为可以保存原始类或结构的所有可能值的类型。
34 随事件 指定一个或多个声明的成员变量引用可以引发事件的类的实例。
35 只写 指定属性可以写入但不能读取。

VB.Net - 语句

语句是 Visual Basic程序中的完整指令。它可能包含关键字、运算符、变量、文字值、常量和表达式。

陈述可以分类为 -

  • 声明语句- 这些是您命名变量、常量或过程的语句,也可以指定数据类型。

  • 可执行语句- 这些是启动操作的语句。这些语句可以调用方法或函数、循环或分支代码块或将值或表达式分配给变量或常量。在最后一种情况下,它称为赋值语句。

声明声明

声明语句用于命名和定义过程、变量、属性、数组和常量。声明编程元素时,您还可以定义其数据类型、访问级别和范围。

您可以声明的编程元素包括变量、常量、枚举、类、结构、模块、接口、过程、过程参数、函数返回、外部过程引用、运算符、属性、事件和委托。

以下是 VB.Net 中的声明语句 -

先生编号 声明和说明 例子
1

昏暗的声明

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

Dim number As Integer
Dim quantity As Integer = 100
Dim message As String = "Hello!"
2

常量声明

声明并定义一个或多个常量。

Const maximum As Long = 1000
Const naturalLogBase As Object 
= CDec(2.7182818284)
3

枚举语句

声明一个枚举并定义其成员的值。

Enum CoffeeMugSize
   Jumbo
   ExtraLarge
   Large
   Medium
   Small
End Enum 
4

班级声明

声明类的名称并介绍该类所包含的变量、属性、事件和过程的定义。

Class Box
Public length As Double
Public breadth As Double   
Public height As Double
End Class
5

结构声明

声明结构的名称并介绍该结构所包含的变量、属性、事件和过程的定义。

Structure Box
Public length As Double           
Public breadth As Double   
Public height As Double
End Structure
6

模块声明

声明模块的名称并介绍模块包含的变量、属性、事件和过程的定义。

Public Module myModule
Sub Main()
Dim user As String = 
InputBox("What is your name?") 
MsgBox("User name is" & user)
End Sub 
End Module
7

接口声明

声明接口的名称并介绍接口包含的成员的定义。

Public Interface MyInterface
   Sub doSomething()
End Interface 
8

功能声明

声明定义 Function 过程的名称、参数和代码。

Function myFunction
(ByVal n As Integer) As Double 
   Return 5.87 * n
End Function
9

子声明

声明定义 Sub 过程的名称、参数和代码。

Sub mySub(ByVal s As String)
   Return
End Sub 
10

声明声明

声明对外部文件中实现的过程的引用。

Declare Function getUserName
Lib "advapi32.dll" 
Alias "GetUserNameA" 
(
   ByVal lpBuffer As String, 
   ByRef nSize As Integer) As Integer 
11

运营商声明

声明在类或结构上定义运算符过程的运算符符号、操作数和代码。

Public Shared Operator +
(ByVal x As obj, ByVal y As obj) As obj
   Dim r As New obj
' implemention code for r = x + y
   Return r
End Operator 
12

财产声明

声明属性的名称以及用于存储和检索属性值的属性过程。

ReadOnly Property quote() As String 
   Get 
      Return quoteString
   End Get 
End Property
13

事件声明

声明用户定义的事件。

Public Event Finished()
14

代表声明

用于声明委托。

Delegate Function MathOperator( 
   ByVal x As Double, 
   ByVal y As Double 
) As Double 

可执行语句

可执行语句执行一个操作。调用过程、分支到代码中的另一个位置、循环多个语句或计算表达式的语句都是可执行语句。赋值语句是可执行语句的特例。

例子

以下示例演示了决策声明 -

Module decisions
   Sub Main()
      'local variable definition '
      Dim a As Integer = 10

      ' check the boolean condition using if statement '
      If (a < 20) Then
         ' if condition is true then print the following '
         Console.WriteLine("a is less than 20")
      End If
      Console.WriteLine("value of a is : {0}", a)
      Console.ReadLine()
   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

a is less than 20;
value of a is : 10

VB.Net - 指令

VB.Net 编译器指令向编译器发出指令,在实际编译开始之前预处理信息。所有这些指令都以 # 开头,并且一行中的指令之前只能出现空格字符。这些指令不是声明。

VB.Net编译器没有单独的预处理器;然而,这些指令的处理就像有一个指令一样。在 VB.Net 中,编译器指令用于帮助进行条件编译。与 C 和 C++ 指令不同,它们不用于创建宏。

VB.Net 中的编译器指令

VB.Net 提供了以下一组编译器指令 -

  • #Const 指令

  • #ExternalSource 指令

  • #If...Then...#Else 指令

  • #Region 指令

#Const 指令

该伪指令定义条件编译器常量。该指令的语法是 -

#Const constname = expression

在哪里,

  • constname - 指定常量的名称。必需的。

  • 表达式- 它可以是文字或其他条件编译器常量,也可以是包括除Is之外的任何或所有算术或逻辑运算符的组合。

例如,

#Const state = "WEST BENGAL"

例子

以下代码演示了该指令的假设用途 -

Module mydirectives
#Const age = True
Sub Main()
   #If age Then
      Console.WriteLine("You are welcome to the Robotics Club")
   #End If
   Console.ReadKey()
End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

You are welcome to the Robotics Club

#ExternalSource 指令

该伪指令用于指示源代码的特定行与源外部文本之间的映射。它仅供编译器使用,调试器对代码编译没有影响。

该指令允许将外部代码文件中的外部代码包含到源代码文件中。

该指令的语法是 -

#ExternalSource( StringLiteral , IntLiteral )
   [ LogicalLine ]
#End ExternalSource

#ExternalSource指令的参数是外部文件的路径、第一行的行号以及发生错误的行。

例子

以下代码演示了该指令的假设用途 -

Module mydirectives
   Public Class ExternalSourceTester

      Sub TestExternalSource()

      #ExternalSource("c:\vbprogs\directives.vb", 5)
         Console.WriteLine("This is External Code. ")
      #End ExternalSource

      End Sub
   End Class

   Sub Main()
      Dim t As New ExternalSourceTester()
      t.TestExternalSource()
      Console.WriteLine("In Main.")
      Console.ReadKey()

   End Sub

当上面的代码被编译并执行时,它会产生以下结果 -

This is External Code.
In Main.

#If...Then...#Else 指令

该指令有条件地编译选定的 Visual Basic 代码块。

该指令的语法是 -

#If expression Then
   statements
[ #ElseIf expression Then
   [ statements ]
...
#ElseIf expression Then
   [ statements ] ]
[ #Else
   [ statements ] ]
#End If

例如,

#Const TargetOS = "Linux"
#If TargetOS = "Windows 7" Then
   ' Windows 7 specific code
#ElseIf TargetOS = "WinXP" Then
   ' Windows XP specific code
#Else
   ' Code for other OS
#End if

例子

以下代码演示了该指令的假设用途 -

Module mydirectives
#Const classCode = 8

   Sub Main()
   #If classCode = 7 Then
      Console.WriteLine("Exam Questions for Class VII")
   #ElseIf classCode = 8 Then
      Console.WriteLine("Exam Questions for Class VIII")
   #Else
      Console.WriteLine("Exam Questions for Higher Classes")
   #End If
      Console.ReadKey()

   End Sub
End Module

当上面的代码被编译并执行时,它会产生以下结果 -

Exam Questions for Class VIII

#Region 指令

此指令有助于折叠和隐藏 Visual Basic 文件中的代码部分。

该指令的语法是 -

#Region "identifier_string" 
#End Region

例如,

#Region "StatsFunctions" 
   ' Insert code for the Statistical functions here.
#End Region

VB.Net - 运算符

运算符是告诉编译器执行特定数学或逻辑操作的符号。VB.Net 具有丰富的内置运算符,并提供以下类型的常用运算符 -

  • 算术运算符

  • 比较运算符

  • 逻辑/位运算符

  • 移位运算符

  • 赋值运算符

  • 杂项运算符

本教程将解释最常用的运算符。

算术运算符

下表显示了 VB.Net 支持的所有算术运算符。假设变量A为 2,变量B为 7,则 -

显示示例

操作员 描述 例子
^ 计算一个操作数的另一操作数次方 B^A 将给出 49
+ 添加两个操作数 A + B 将得到 9
- 从第一个操作数中减去第二个操作数 A - B 将给出 -5
* 将两个操作数相乘 A * B 将给出 14
/ 将一个操作数除以另一个操作数并返回浮点结果 B/A 会给 3.5
\ 将一个操作数除以另一个操作数并返回整数结果 B \ A 给出 3
模组 模数运算符和整数除法后的余数 B MOD A 将给出 1

比较运算符

下表显示了 VB.Net 支持的所有比较运算符。假设变量A为 10,变量B为 20,则 -

显示示例

操作员 描述 例子
= 检查两个操作数的值是否相等;如果是,则条件成立。 (A = B) 不正确。
<> 检查两个操作数的值是否相等;如果值不相等,则条件为真。 (A <> B) 为真。
> 检查左操作数的值是否大于右操作数的值;如果是,则条件成立。 (A > B) 不正确。
< 检查左操作数的值是否小于右操作数的值;如果是,则条件成立。 (A < B) 为真。
>= 检查左操作数的值是否大于或等于右操作数的值;如果是,则条件成立。 (A >= B) 不正确。
<= 检查左操作数的值是否小于或等于右操作数的值;如果是,则条件成立。 (A <= B) 为真。

除此之外,VB.Net 还提供了三个比较运算符,我们将在后续章节中使用它们;不过,我们在这里进行简要描述。

  • Is运算符 - 它比较两个对象引用变量并确定两个对象引用是否引用同一对象而不执行值比较。如果 object1 和 object2 都引用完全相同的对象实例,则结果为True;否则,结果为 False。

  • IsNot运算符 - 它还比较两个对象引用变量并确定两个对象引用是否引用不同的对象。如果 object1 和 object2 都引用完全相同的对象实例,则结果为False;否则,结果为 True。

  • Like运算符 - 它将字符串与模式进行比较。