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

C#:如何从另一个方法访问并修改变量后返回原方法?

解决C#中方法间修改变量并回传的问题

嘿,这个问题其实挺常见的,你之前想通过循环调用方法的思路确实走偏啦,完全没必要搞无限循环那一套。C#里有几种非常直接的方式能实现你要的需求——在methodTwo里修改变量后,把更新后的值传回methodOne,我给你详细讲讲:

方法1:使用返回值(最直观的方式)

直接把methodTwo改成有返回值的方法,修改完变量后返回它就行,methodOne只需要接收这个返回值。示例代码如下:

public void methodOne(string variable1) { 
    variable1 = "testing"; 
    myClass p = new myClass(); 
    // 接收methodTwo返回的修改后的值
    variable1 = p.methodTwo(variable1);
    // 这里就能拿到修改后的值了
    Console.WriteLine("修改后的值:" + variable1);
} 
// 把methodTwo改成返回string类型的方法
public string methodTwo(string variable1) { 
    // 修改变量值
    variable1 = "modified " + variable1;
    Console.Write("methodTwo中的值:" + variable1);
    // 返回修改后的值
    return variable1;
}

方法2:使用引用参数(ref关键字)

如果你不想修改methodTwo的返回值类型(比如它本来就需要返回其他东西),可以用ref关键字实现引用传递,这样methodTwo里对变量的修改会直接作用于methodOne里的原变量:

public void methodOne(string variable1) { 
    variable1 = "testing"; 
    myClass p = new myClass(); 
    // 调用时加上ref关键字
    p.methodTwo(ref variable1);
    Console.WriteLine("修改后的值:" + variable1);
} 
// 参数前加上ref关键字
public void methodTwo(ref string variable1) { 
    // 直接修改,会同步到methodOne的原变量
    variable1 = "modified " + variable1;
    Console.Write("methodTwo中的值:" + variable1);
}

方法3:使用输出参数(out关键字)

和ref类似,但out要求方法必须给参数赋值,适合那种方法的核心目的就是输出这个修改后的值的场景,而且调用前不需要给变量初始化:

public void methodOne() { 
    string variable1;
    myClass p = new myClass(); 
    // 调用时加上out关键字
    p.methodTwo(out variable1);
    Console.WriteLine("methodTwo返回的值:" + variable1);
} 
// 参数前加上out关键字
public void methodTwo(out string variable1) { 
    // 必须给variable1赋值
    variable1 = "modified value from methodTwo";
    Console.Write("methodTwo中的值:" + variable1);
}

为什么你的原思路会出问题?

你之前想在methodTwo里调用methodOne,会导致每次调用methodOne都会新建myClass实例,然后调用methodTwo,methodTwo又调用methodOne,形成无限循环,完全是没必要的绕路。上面这三种方法都能直接实现变量修改后的回传,选哪种取决于你的实际需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:07:43