该程序的输出为: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();
}
}
}
答案 0 :(得分:1)
该程序的输出为0 0
。与方法SetData()
一样,您将值分配给相同的变量,这些变量仅在该范围内。因此,该值不会分配给类的变量。如果要将值分配给类变量,只需将SetData()
方法修改为
public void SetData(int i, Single j)
{
this.i = i;
this.j = j;
}
这样可行。
我希望这个解释会对你有所帮助。 :)
答案 1 :(得分:1)
由于在SetData
方法中,变量i
和j
是方法的局部变量,因此输出为0,0。因此,您的班级变量i
和j
未获得分配。
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