codecamp

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

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,逻辑清晰性能来!

Visual Basic (VB) 运算符大全(算术/比较/逻辑/位/字符串)
Visual Basic (VB) If Else 语句详解
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }