为何将变量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
相关产品推荐
相关产品推荐

