C# 同名的局部变量和全局变量及其工作原理?
有人能告诉我给定代码段的程序流程和输出吗?我在VS上尝试了这个方法,得到了0作为输出,我想知道它是如何工作的。谢谢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
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;
}
这是对的,;但是,我建议使用属性而不是字段。有许多优点,但增加的开销很少。