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 是闰年?否
最佳实践
- 优先块 If,清晰易维护
- 简单赋值用三元
If函数 - 多条件组合用
AndAlso/OrElse短路 - 嵌套 > 3 层改为
Select Case或抽方法 - 注释写「为什么」,不要写「是什么」
小结口诀
单行 If 短平快,块 If 多分支易编排;
三元 If 只赋值,嵌套两层是极限;
条件短路AndAlso,逻辑清晰性能来!