程序输出什么&为什么?

时间:2013-06-22 05:25:06

标签: c#

该程序的输出为:0 0

任何人都可以告诉我为什么会出现这种输出?

namespace ConsoleApplication
{
    class Sample
    {
        int i;
        Single j;
        public void SetData(int i, Single j)
        {
            i = i;
            j = j;
        }

        public void Display()
        {
            Console.WriteLine(i + " " + j);
        }
    }

    class MyProgram
    {
        static void Main(string[ ] args)
        {
            Sample s1 = new Sample();
            s1.SetData(10, 5.4f);
            s1.Display();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

该程序的输出为0 0。与方法SetData()一样,您将值分配给相同的变量,这些变量仅在该范围内。因此,该值不会分配给类的变量。如果要将值分配给类变量,只需将SetData()方法修改为

即可
    public void SetData(int i, Single j)
    {
        this.i = i;
        this.j = j;
    }

这样可行。

我希望这个解释会对你有所帮助。 :)

答案 1 :(得分:1)

由于在SetData方法中,变量ij是方法的局部变量,因此输出为0,0。因此,您的班级变量ij未获得分配。

public void SetData(int i, Single j)
    {
        i = i;
        j = j;
    }

将上述代码更改为:

public void SetData(int i, Single j)
    {
        this.i = i; // using this will refer to the class level variables 
        this.j = j;
    }

或者你可以用不同的方式命名局部变量,然后局部变量不会隐藏类级变量。

public void SetData(int a, Single b)
    {
        i = a;
        j = b;
    }

现在输出将是10和5.4