C#中的作用域和javascript中的作用域还是有区别的.呵呵
class Person { /* *确定C#变量作用域的2个规则. 1.类的字段所处的作用域等同于该字段所属类所在的作用域; * 2.局部变量的作用域仅限于声明它的方法的或循环体内部,以大括号{}为界. */ public string MyVar;//作用域和它所属的类的作用域相同 public void DoSomething() { //someVar变量作用域仅限在DoSomething()方法内部,以{}为届 var someVar = "some value"; int[] someVars = { 1, 2, 3, 5 }; foreach (var item in someVars) { Console.WriteLine(item); } //这里将无法访问foreach循环体内部定义的item变量,编译器会报错 //Console.WriteLine(item); /* OtherPerson的myString字段的作用域与OtherPerson对象的作用域相同. */ OtherPerson oPer = new OtherPerson(); oPer.myString = "思思博士"; } } class OtherPerson { public string myString; } /* 关于变量作用域冲突的现象. * 1.同一个作用域内,存在两个同名的变量,这里不关心变量的类型是否相同.如果存在这种情况,编译器将会报错,编译将无法继续. * 2.局部变量和字段变量同名,那么局部变量会将同名的字段级变量隐藏,就是说在局部变量的作用域内,局部变量的值覆盖了字段级变量的值. */ class Human { public string myVar = "相信未来"; public void DoSomthing() { var myVar = "我相信,我就是我,我相信明天"; int[] someVars={1,2,3,5,8}; foreach (var item in someVars) { //这个地方声明的item会报错. //string item = "和循环重的作用域冲突!"; Console.WriteLine(item); } Console.WriteLine(myVar);//我相信,我就是我,我相信明天(局部变量) Console.WriteLine(this.myVar);//相信未来(字段级的变量) } }