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

VB中同一变量匹配多个值的If条件如何优化

单个变量匹配多取值的If条件优化方案(VB.NET场景)

你原来的写法存在两处明显的冗余:一是重复调用dt.Rows(0).Items("Id").ToString()取值,二是并列写大量Or判断逻辑臃肿,下面是几种常用的优化方式:

方案1:数组Contains方法(最通用,适合90%的场景)

先把待判断的Id提取为变量,再把所有需要匹配的Id放在数组中,直接调用Contains方法判断:

' 先提取当前Id,避免重复取值
Dim currentId As String = dt.Rows(0).Items("Id").ToString()
' 所有需要匹配的Id集中定义在数组中
Dim matchIds As String() = {"548", "78787", "787", "11", "025", "568"}

If matchIds.Contains(currentId) Then
    MessageBox.Show("INSIDE")
End If

优势:

  • 代码可读性极强,后续要新增/删除匹配值直接修改数组即可,不用调整判断逻辑
  • 完全消除了重复取值的冗余操作,执行效率更高
  • 逻辑清晰,不容易出现拼写错误

方案2:HashSet匹配(适合匹配值多、或需要多次判断的场景)

如果要匹配的Id数量超过20个,或者需要在多处重复做这个匹配判断,可以用HashSet存储匹配值,查找效率更高:

Imports System.Collections.Generic

' HashSet可以全局初始化一次,多次重复使用
Dim matchIdSet As New HashSet(Of String) From {"548", "78787", "787", "11", "025", "568"}
Dim currentId As String = dt.Rows(0).Items("Id").ToString()

If matchIdSet.Contains(currentId) Then
    MessageBox.Show("INSIDE")
End If

优势:

  • 查找时间复杂度为O(1),匹配值越多性能优势越明显,远高于数组的O(n)查找效率
  • 可以全局复用,避免每次判断都重复初始化匹配集合

方案3:Select Case多值匹配(适合轻量场景)

如果你不想额外定义集合变量,也可以用VB原生的Select Case多值匹配语法:

Dim currentId As String = dt.Rows(0).Items("Id").ToString()
Select Case currentId
    Case "548", "78787", "787", "11", "025", "568"
        MessageBox.Show("INSIDE")
End Select

优势:

  • 不需要引用额外的集合类型,语法简洁
  • 适合匹配值数量少、不需要复用匹配规则的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:06:02