早些时候我遇到了一个问题,我在C#中发现了一些奇怪的行为.
这会抛出一个错误:
public class MyClass
{
public int MyMethod()
{
for(int x = 0; x < 1; x++)
{
for(int x = 0; x < 1; x++)
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这不会:
public class MyClass
{
public int x = 0;
public int MyMethod()
{
for(int x = 0; x < 1; x++)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
相反,当循环结束时,x将被设置回0.如果你有一个int x和一个,这也将起作用bool x.
为什么这样做?
在第一种情况下,您在同一范围内定义相同的变量,两次,这是一个错误.
在第二种情况下,您将在循环范围内定义局部变量,这将隐藏该x范围内的类成员.在该范围之外,x将引用类成员,但在其内部将引用循环迭代变量.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |