You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.Net中Select/Case语句如何在非Else分支统一执行公共代码

解决VB.Net Select/Case重复代码的几种方案

嘿,这个问题我刚好有几个实用的思路,帮你摆脱重复写numColumns = numColumns + 1的麻烦!

方案一:先处理通用递增,再基于原始值分支

这应该是最简洁易读的方式——先把所有非Case Else分支的通用逻辑抽出来,再用原始值去判断执行不同代码:

' 先保存原始值,避免递增后影响分支判断
Dim originalNumColumns As Integer = numColumns

' 只在需要的分支里执行递增
If originalNumColumns >= 0 AndAlso originalNumColumns <= 2 Then
    numColumns += 1 ' 这里用+=和numColumns = numColumns +1效果一样,更简洁
End If

' 基于原始值执行不同分支的代码
Select Case originalNumColumns
    Case 0
        ' Some code
    Case 1
        ' Some different code
    Case 2
        ' Some even more different code
    Case Else
        ' Do Nothing
End Select

这个方案完全避免了重复代码,逻辑也一目了然,不会让后续维护的人困惑。

方案二:用组合Case统一处理通用逻辑

如果你更倾向于把逻辑都放在Select Case里,可以用多值Case把0、1、2合并,先执行通用递增,再嵌套一个小的Select处理分支差异:

Select Case numColumns
    Case 0, 1, 2 ' 或者用Case 0 To 2,因为是连续值
        numColumns += 1
        ' 基于原来的numColumns值执行不同代码,这里要减1因为已经递增过了
        Select Case numColumns - 1
            Case 0
                ' Some code
            Case 1
                ' Some different code
            Case 2
                ' Some even more different code
        End Select
    Case Else
        ' Do Nothing
End Select

不过嵌套Select会稍微增加一点复杂度,如果你分支逻辑比较简单,这个方案也能用。

关于你提到的「Case All」

VB.Net里并没有直接的Case All语法,但我们可以用Case 0,1,2或者Case 0 To 2(当值连续时)来模拟“所有需要处理的分支”,把通用逻辑放在这个组合Case里,就能达到类似的效果啦。

内容的提问来源于stack exchange,提问作者Skitzafreak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:09:02