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

C#中布尔值反转方法返回值未生效问题咨询

问题解决:布尔值反转方法未正确更新原变量

你的问题核心在于C#中bool是值类型,默认参数传递是值拷贝,加上调用方法时没有接收返回值,导致原变量pressingFollowButton根本没被更新。以下是两种可行的解决方式:

方式一:接收方法返回值并赋值给原变量

首先可以简化你的SwitchToOpposite方法(逻辑等价但更简洁),然后在调用时将返回值赋值回原变量:

优化后的反转方法

bool SwitchToOpposite(bool boolToSet)
{
    // 直接返回布尔值的取反,替代冗余的if-else
    return !boolToSet;
}

修改后的调用代码

public void OnFollowButton(InputAction.CallbackContext context)
{
    if (context.performed)
    {
        // 将方法返回的反转结果赋值给原变量
        pressingFollowButton = SwitchToOpposite(pressingFollowButton);
    }
}

方式二:使用ref参数直接修改原变量

如果你希望方法直接修改外部变量,可以将参数声明为ref类型,这样传递的是变量的引用而非副本:

修改后的反转方法

void SwitchToOpposite(ref bool boolToSet)
{
    boolToSet = !boolToSet;
}

修改后的调用代码

public void OnFollowButton(InputAction.CallbackContext context)
{
    if (context.performed)
    {
        // 调用时必须加上ref关键字
        SwitchToOpposite(ref pressingFollowButton);
    }
}

两种方式都能解决问题:方式一更偏向函数式风格,通过返回新值更新变量;方式二则直接操作原变量,适合需要直接修改外部状态的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:23:21