变量作用域(Scope)和变量隐藏(Shadowing)
1. 变量作用域(Scope)
- 类字段(成员变量):
在类的内部声明(如bool? bbb = true;),属于整个类的对象,可以在类的所有非静态成员方法中通过this.bbb或对象名.bbb访问。 - 局部变量:
在方法内部声明(如bool bbb = false;),只在该方法体内有效,出了这个方法就不能访问。
2. 变量隐藏(Shadowing)
- 当局部变量和类字段同名时,在方法内部访问该名字时,局部变量会“隐藏”类的字段。
- 只有通过对象(如
this.bbb或p.bbb)才能访问被隐藏的类字段。
3. 静态与实例成员
- 静态方法(如
static void Main())不能直接访问非静态字段(如bool? bbb),需要通过实例(如p.bbb)访问。 -
using System; namespace SharpTest2 { public class Program2 { bool? bbb = true; // 类字段 static void Main() { Program2 p = new Program2(); // 输出类字段 bbb 的初始值 Console.WriteLine($"类字段bbb的初始值: {p.bbb}"); // 修改类字段 bbb p.bbb = false; Console.WriteLine($"类字段bbb修改后的值: {p.bbb}"); // 在 Main 方法内声明局部变量 bbb bool bbb = false; Console.WriteLine($"局部变量bbb的值: {bbb}"); // 再次输出类字段 bbb 的值,确认未受局部变量影响 Console.WriteLine($"类字段bbb最终的值: {p.bbb}"); } } }


浙公网安备 33010602011771号