首页 > 代码库 > 字段和局部变量的作用域冲突

字段和局部变量的作用域冲突

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 namespace Wrox 6 { 7     class Program 8     { 9         static int j = 20;10         static void Main(string[] args)11         {12             int j = 30;13             Console.WriteLine(j);14             Console.WriteLine(Program.j);15             Console.ReadLine();16             return;                     17         }18     }19 }

虽然在Main()方法的作用域内声明了两个变量j,这段代码也会编译--在类级上定义的j和Main()方法中定义的j,在该类删除前是不会超出作用域的;类级的变量j会被看成字段,此时Main()方法中的新变量j隐藏了同名的类级变量,所以运行代码时会显示数字30;如果要引用类级变量j时,只能使用类本身的名称。