gpt4 book ai didi

c# - 'ref' 没有像我认为的那样工作

转载 作者:行者123 更新时间:2023-11-30 14:39:20 25 4
gpt4 key购买 nike

我有以下代码,在它运行时查看它表明初始的“myInt”和“myFloat”在方法调用返回之前不会更改它们的值。由于它们每次都作为“ref”传递,所以每次在被调用方法中更改它们时,它们的值不应该改变吗?

class Tester
{
public void Run()
{
int myInt = 42;
float myFloat = 9.685f;
Console.WriteLine("Before starting: \n value of myInt: {0} \n value of myFloat: {1}", myInt, myFloat);
// pass the variables by reference
Multiply( ref myInt, ref myFloat );
Console.WriteLine("After finishing: \n value of myInt: {0} \n value of myFloat: {1}", myInt, myFloat);
}
private static void Multiply (ref int theInt, ref float theFloat)
{
theInt = theInt * 2;
theFloat = theFloat *2;
Divide( ref theInt, ref theFloat);
}
private static void Divide (ref int theInt, ref float theFloat)
{
theInt = theInt / 3;
theFloat = theFloat / 3;
Add(ref theInt, ref theFloat);
}
public static void Add(ref int theInt, ref float theFloat)
{
theInt = theInt + theInt;
theFloat = theFloat + theFloat;
}
static void Main()
{
Tester t = new Tester();
t.Run();
}
}

最佳答案

编辑:好的,看到您评论中的描述...

如果您在(比如)Add 中放置一个断点,那么您的监视变量将不会改变,除非您让它们重新求值——这必须在正确的堆栈中完成。遇到断点后,转到“调用堆栈” View ,双击“运行”方法(这不会改变你必须去的地方,只是你正在查看的堆栈帧),你会看到值更新。

关于c# - 'ref' 没有像我认为的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com