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

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Û

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:45:05