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

为何将变量Index作为参数传递给方法后值未更新?

问题:值类型参数传入方法后原变量未更新

你这段代码里的int属于值类型,C#默认采用值传递的方式传递参数:调用Method(Index)时,程序会把Index的数值复制一份,传给方法内的Index_参数。方法里对Index_的自增操作只作用在这个副本上,完全不会影响外部的原变量Index,所以控制台最终输出还是初始值0。

两种可行的解决办法:

  • 使用ref关键字实现引用传递
    用ref声明参数后,方法内操作的就是原变量本身,修改会直接同步到外部:

    int Index = 0;
    
    void Method(ref int Index_)
    {
        Index_++;
    }
    
    Method(ref Index);
    Console.WriteLine(Index); // 输出1
    

    注意调用方法时也必须加上ref关键字,明确告知编译器你允许方法修改原变量。

  • 让方法返回更新后的值
    如果不想修改原变量,或者更倾向无副作用的设计,可以让方法返回新值,再赋值给原变量:

    int Index = 0;
    
    int Method(int Index_)
    {
        return Index_ + 1;
    }
    
    Index = Method(Index);
    Console.WriteLine(Index); // 输出1
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:29:54