局部变量和具有相同名称的全局变量及其工作原理?

时间:2016-02-08 14:20:29

标签: c#

有人可以告诉我程序流程和给定的片段。我在VS上尝试了这个并得到0 0作为输出,我想知道这是如何工作的。感谢。

static void Main(string[] args)
{
    Sample s1 = new Sample();
    s1.getdata(10, 5.4f);
    s1.displaydata();
}

class Sample
{
    int i;
    Single j;
    public void getdata(int i,Single j)
    {
        i = i;
        j = j;
    }
    public void displaydata()
    {
        Console.WriteLine(i + " " + j);
    }
}

1 个答案:

答案 0 :(得分:5)

由于局部变量优先于类变量,因此永远不会设置类变量。在getdata方法中,您将本地(方法作用域)变量设置为它们自己的值。因此,在displaydata方法中,您将打印整数(0)的默认值。

要解决此问题,您可以通过为它们添加前缀来更改变量的名称,或使用this来设置范围。

public void getdata(int i,Single j)
{
    this.i = i;
    this.j = j;
}