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

C#如何传递布尔变量作为参数:修改原变量而非仅传值

问题原因

你遇到的问题核心在于C#中bool是值类型,默认参数传递方式为按值传递。调用myToggleFunction(myBool)时,程序会把myBool的值复制一份传给函数内的pBool参数,函数内部修改的只是这个副本,原变量myBool不会受到任何影响。

解决方案

以下几种方式都能实现修改原布尔变量的需求:

方式1:使用ref关键字传递引用

ref关键字会让参数按引用传递,函数内部操作的就是原变量本身,而非副本。

修改后的函数代码:

void myToggleFunction(ref bool pBool)
{
    // 简化逻辑,无需冗长的if-else判断
    pBool = !pBool;
}

调用方式修改为:

myToggleFunction(ref myBool);

方式2:返回修改后的值并重新赋值

如果不想用引用传递,可以让函数返回切换后的布尔值,再赋值给原变量:

修改后的函数代码:

bool myToggleFunction(bool pBool)
{
    return !pBool;
}

调用方式修改为:

myBool = myToggleFunction(myBool);

方式3:使用out关键字(适合无需读取原值的场景)

如果函数不需要依赖原变量的初始值,仅需输出新值,可以用out关键字,但此场景下ref更贴合需求(因为我们需要基于原值切换状态),示例仅作参考:

void myToggleFunction(out bool pBool)
{
    // 使用out必须给参数赋值,否则编译报错
    pBool = true;
}

调用时:

myToggleFunction(out myBool);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:31:03