变量作用域(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}");
            }
        }
    }

posted @ 2025-04-28 21:21  Arxu  阅读(33)  评论(0)    收藏  举报