C#调用void方法无法修改外部int变量问题求助
核心问题
C# 中 int 属于值类型,默认采用按值传递的方式传参。你当前代码里的Methode方法接收的_a、_b是外部a、b变量的副本,方法内部修改的只是副本,完全不会影响外部的原始变量,所以这段代码的正常运行结果本来就是0,你之前得到3属于异常情况。
之前返回3的可能原因
- 你最初写的代码给参数加了
ref/out关键字,后续调试时误删了关键字没有察觉,正确的可修改外部值类型的写法如下:
private void Button_Click(object sender, RoutedEventArgs e) { int a = 0; int b = 0; int c = 0; Methode(ref a, ref b); c = a + b; Textbox.Text = c.ToString(); } // 方法定义需要加ref关键字 private void Methode(ref int _a, ref int _b) { _a += 1; _b += 2; }
- 之前调试时在断点处手动修改了
a、b的值,误以为是代码正常运行的结果 - 最初的
a、b是类级别的全局字段,后续调整代码时把变量移到了Button_Click方法内部,作用域变化导致逻辑失效 - 之前运行的是其他版本的代码,存在多项目或多分支代码混淆的情况
排查方案
- 清理Visual Studio缓存后重新生成:点击顶部菜单栏「生成」→「清理解决方案」,再点击「生成」→「重新生成解决方案」,排除旧编译缓存的干扰
- 核对代码提交记录,确认是否存在
ref关键字删除、变量作用域调整这类容易被忽略的变更 - 检查当前运行的配置分支,确认是否和之前正常运行的代码分支一致
内容的提问来源于stack exchange,提问作者ELLJÛ
相关产品推荐
相关产品推荐

