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

VB.NET是否仅能通过If-Else实现C#三元运算符的变量定义逻辑?

VB.NET 中替代If-Else语句的三元等价写法

嘿,好问题!其实你完全不用局限于完整的If-Else语句——VB.NET里有和C#三元运算符condition ? trueVal : falseVal完全等价的内联If表达式,也就是If()运算符(注意这是表达式,不是流程控制的If语句)。

直接赋值的简写示例

对应你C#里的代码:

string outcome = (success ? "succeeded" : "failed");

VB.NET里可以这么写:

Dim outcome As String = If(success, "succeeded", "failed")

要注意的小细节

  • 这个If()是表达式,它会返回一个值,所以可以直接用来给变量赋值,就像C#的三元运算符一样,不需要分开写If-Else块。
  • 别和流程控制的If...Then...Else语句搞混啦,后者是用来执行代码块的,而这个If()是用来计算并返回值的。
  • 如果你用的是比较旧的VB.NET版本(比如.NET Framework 3.5之前),可能会看到IIf()函数,但它是旧的VB6兼容函数,没有类型检查,而且会同时计算真假两个分支的表达式(可能引发不必要的副作用),所以更推荐用If()运算符。

举个带副作用的例子对比:

' IIf会同时执行两个分支的方法,哪怕条件不满足
Dim result As String = IIf(success, GetSuccessMsg(), GetFailedMsg())

' If()只会执行符合条件的分支,和C#三元运算符行为一致
Dim result As String = If(success, GetSuccessMsg(), GetFailedMsg())

所以总结一下:VB.NET里有更简洁的写法,不用非得写完整的If-Else语句,直接用If()内联表达式就可以实现和C#三元运算符完全一样的效果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:32:31