Visual Basic (VB) 条件语句 if 详解

2025-09-30 18:03 更新

Visual Basic 中,If 语句可用于根据表达式的值有条件地执行代码块或语句。   通常,在 Visual Basic 中,需要根据条件执行的语句称为“条件语句”,该语句更有可能是代码块。

条件语句作用

按「真/假」决定程序走向,VB 提供 3 种语法:
① 单行 If  ② 块 If  ③ 三元 If 函数

Visual Basic If 语句流程图

下面是流程图,它将表示 Visual Basic 编程语言中 If 语句的流程。

单行 If(Single-Line If Statement)

语法If 条件 Then 语句1 [Else 语句2]
特点:必须写在一行,不需要 End If

Dim score As Integer = 85
If score >= 60 Then Console.WriteLine("及格") Else Console.WriteLine("不及格")

提示:单行 If 不适合嵌套,可读性差。

块 If(If…Then…Else Statement)

语法:

If 条件 Then
    ' 条件为真时
[ElseIf 条件2 Then
    ' 条件2 为真时]
[Else
    ' 其他情况]
End If

示例:多分支成绩等级

Dim score As Integer = 85
Dim grade As String


If score >= 90 Then
    grade = "A"
ElseIf score >= 80 Then
    grade = "B"
ElseIf score >= 70 Then
    grade = "C"
ElseIf score >= 60 Then
    grade = "D"
Else
    grade = "E"
End If


Console.WriteLine($"成绩等级:{grade}")   ' 输出 B

嵌套 If

Dim x As Integer = 10, y As Integer = 5
If x > 0 Then
    If y > 0 Then
        Console.WriteLine("第一象限")
    Else
        Console.WriteLine("第四象限")
    End If
End If

建议:嵌套层数 <= 3,否则改用 Select Case 或抽方法

三元 If 函数

语法变量 = If(条件, 真值, 假值)
特点

  • 两个分支必须类型兼容
  • 只计算需要的一侧(短路)

Dim score As Integer = 59
Dim result As String = If(score >= 60, "及格", "不及格")
Console.WriteLine(result)   ' 不及格

对比块 If 更简洁,但不能替代多分支

If 三元支持嵌套(VB 14+)

Dim level As String = If(score >= 90, "A",
                         If(score >= 80, "B",
                            If(score >= 70, "C",
                               If(score >= 60, "D", "E"))))

可读性下降,微软建议 <= 2 层

与 AndAlso / OrElse 联合使用(推荐)

Dim age As Integer = 25
Dim hasCard As Boolean = True


If age >= 18 AndAlso hasCard Then
    Console.WriteLine("可以办理信用卡")
End If

AndAlso 短路,避免空引用或除零

8. 示例:判断闰年(块 If + 嵌套)

Module LeapYear
    Sub Main()
        Console.Write("请输入年份:")
        Dim year As Integer = CInt(Console.ReadLine())
        Dim isLeap As Boolean


        If year Mod 400 = 0 Then
            isLeap = True
        ElseIf year Mod 100 = 0 Then
            isLeap = False
        ElseIf year Mod 4 = 0 Then
            isLeap = True
        Else
            isLeap = False
        End If


        Console.WriteLine($"{year} 是闰年?{If(isLeap, "是", "否")}")
    End Sub
End Module

运行示例

请输入年份:2025
2025 是闰年?否

最佳实践

  1. 优先块 If,清晰易维护
  2. 简单赋值用三元 If 函数
  3. 多条件组合用 AndAlso / OrElse 短路
  4. 嵌套 > 3 层改为 Select Case 或抽方法
  5. 注释写「为什么」,不要写「是什么」

小结口诀

单行 If 短平快,块 If 多分支易编排;

三元 If 只赋值,嵌套两层是极限;

条件短路 AndAlso,逻辑清晰性能来!

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号