Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同名的局部变量和全局变量及其工作原理?_C# - Fatal编程技术网

C# 同名的局部变量和全局变量及其工作原理?

C# 同名的局部变量和全局变量及其工作原理?,c#,C#,有人能告诉我给定代码段的程序流程和输出吗?我在VS上尝试了这个方法,得到了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

有人能告诉我给定代码段的程序流程和输出吗?我在VS上尝试了这个方法,得到了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;
}

这是对的,;但是,我建议使用属性而不是字段。有许多优点,但增加的开销很少。