-1

我有一堂课。我有两个实例成员变量 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。为什么会这样?到底发生了什么。

4

3 回答 3

5

我确定实例字段没有更改。您很可能误解了调试器的输出。如果您只是观察xy当您在Add方法中时,调试器(观察窗口)将显示方法参数的值。您需要观看this.xthis.y

这也是为什么我总是用下划线开始我的实例字段的原因之一。

于 2013-07-15T07:02:39.963 回答
3

好吧,它不应该改变,最好的确认方法也是添加这个

Console.WriteLine(abs.Add(12, 13).ToString()); // output 25
Console.WriteLine(abs.x + abs.y); // output 21

检查您需要使用的字段的值this.x

有关更多详细信息,变量名称不应与字段名称匹配

于 2013-07-15T07:07:37.577 回答
1

调试器显示x断点所在范围的值。用鼠标指向成员声明不一定需要显示该变量的值。签this.x入观看视图。

于 2013-07-15T07:10:09.213 回答