首先说一下定义:
- 申明为类型级的变量为字段;
- 在方法中申明的变量为局部变量。
- 如果方法中局部变量与字段申明名称相同,那么在方法调用时首先使用的是局部变量而隐藏类型级变量,直至方法结束。
例子1:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 class Program 10 { 11 static int i = 10; 12 static void Main(string[] args) 13 { 14 int i = 20; 15 Console.WriteLine("main i = {0}",i); 16 17 Console.ReadKey(); 18 } 19 } 20 }
结果:main i = 20
例子2:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 class Program 10 { 11 static int i = 10; 12 static void Main(string[] args) 13 { 14 int i = 20; 15 Console.WriteLine("main i = {0},static i={1}",i,Program.i); 16 17 Console.ReadKey(); 18 } 19 } 20 }
结果:main i = 20,static i=10
由此结论,要调用相同名称的字段与局部变量时,对于字段可以使用object.filename语法实现。