为什么实例变量的值会根据函数值进行更改

时间:2013-07-15 06:58:49

标签: c# .net oop

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

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

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

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

有关详细信息Variable names should not match field names

答案 2 :(得分:1)

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