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

C#中if条件内的赋值操作行为为何与预期不符?

核心原理说明

在C#中,赋值表达式a = b本身存在返回值,返回值就是你赋予变量的b的值,并非所有赋值表达式的判断结果都为true。

对应代码现象解释

你贴出的代码运行结果完全符合C#的语法规则:

  • Foo方法中if (someVar = true)的执行逻辑:
    1. 先执行赋值操作,将true赋值给someVar
    2. 整个赋值表达式的返回值为true,if条件判断通过,所以对应打印语句会执行
  • Bar方法中if (someVar = false)的执行逻辑:
    1. 先执行赋值操作,将false赋值给someVar
    2. 整个赋值表达式的返回值为false,if条件判断不通过,所以对应打印语句不会执行
      你的相关猜测完全正确,正是因为赋值后表达式返回值为false,才没有进入对应代码块。

额外提示

if条件内直接写赋值语句很容易因手滑把相等比较符==误写为赋值符=导致逻辑bug,多数代码规范和静态检查工具都会对这类写法给出告警。如果确实需要在判断前先赋值,建议显式补充比较逻辑提升可读性,比如写成if ((someVar = GetBooleanValue()) == true)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:02