字段和局部变量的作用域冲突
某些情况可以区分名称相同(尽管其完全限定的名称不同)、作用于相同的两个标识符。此时编译器允许声明第2个变量。原因是C#再变量之间有一个基本区,他把在类型级别声明的变量看作字段,而把方法中声明的变量看作局部变量。
public class ScopeClass
{
int i = 1;
public void Print()
{
int i = 2;
Console.WriteLine(string.Format("i value is {0}", i));
Console.WriteLine(string.Format("ScopeTest i value is{0}", this.i));
}
}
虽然在Main()方法的作用域内声明两个变量i,此时方法中声明的变量隐藏了同名的类级变量,如果要访问类级变量,可以使用语法 object.fieldname