我上课了。我有两个实例成员变量x和y,并且该类还有一个函数,它再次接受两个名为x和y的变量。
public class MyClass
{
public int x;
public int y;
public int Add(int x , int y)
{
return (x + y);
}
}
现在我正在创建类的实例并将值分配给实例变量。如果我使用相同的实例调用该函数,则实例变量的值将更改为我作为参数传递给的值。功能如下图所示
MyClass abs = new MyClass();
abs.x = 10;
abs.y = 11;
Console.WriteLine(abs.Add(12, 13).ToString());
调试时我发现实例变量的值分别变为12和13。为什么会这样?到底发生了什么。
答案 0 :(得分:5)
我确定实例字段没有更改。您很可能误解了调试器输出。如果您只是在x
方法中观看y
或Add
,则调试器(观察窗口)将显示方法参数的值。您需要观看this.x
或this.y
。
这也是我总是以下划线开始我的实例字段的原因之一。
答案 1 :(得分:3)
好吧,它不应该改变,确认的最佳方式是添加这个
Console.WriteLine(abs.Add(12, 13).ToString()); // output 25
Console.WriteLine(abs.x + abs.y); // output 21
检查您需要使用的字段的值this.x
答案 2 :(得分:1)
调试器显示断点所在范围的x
值。使用鼠标指向成员声明不一定需要显示该变量的值。在观看视图中查看this.x
。