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

本文关键字:全局变量 工作 局部变量 | 更新日期: 2023-09-27 18:33:45

有人可以告诉我程序流程和给定片段之外。我在 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);
    }
}

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

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

若要解决此问题,可以更改变量的名称(例如,通过前缀)或使用 this 设置范围。

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