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
相关产品推荐
相关产品推荐

