一、核心本质区别必考简答题1. 非静态成员实例成员归属对象实例每 new 一个对象就会产生独立的一份数据对象之间互不干扰。包含非静态字段、非静态属性、非静态方法2. 静态成员static归属类全局只有唯一一份数据所有对象共享同一份静态数据无论 new 多少个对象静态成员永远只有一份包含静态字段、静态属性、静态方法二、调用规则超级重点考试必坑1. 非静态成员调用必须通过 对象名 调用People p1 new People(); p1.F1(); // 非静态方法 p1.Id 1; // 非静态属性2. 静态成员调用必须通过 类名 调用不推荐对象调用规范写法People.Age 10; // 静态属性 People.F2(); // 静态方法三、互相访问权限死规则必须背死1. 非静态方法【可以随便访问】静态成员非静态方法中可以直接使用静态属性、静态方法原因类静态数据全局常驻对象实例可以读取类的数据public void F1() { Age 10; // 直接访问静态属性 F2(); // 直接访问静态方法 }2. 静态方法【不能直接访问】非静态成员静态方法中不允许直接调用非静态属性/方法原因静态属于类对象可能还没创建没有实例数据如果一定要用必须手动 new 对象调用public static void F2() { // 错误直接使用非静态成员 // Id 1; // F1(); // 正确new 对象后使用 People p new People(); p.Id 1; p.F1(); }四、属性赋值死循环坑你代码重点易错点错误写法致命报错set { Id value; // 死循环 }原因Idvalue是属性赋值会重复触发set访问器无限递归死循环正确写法set { Console.WriteLine(ssssssssss); id value; // 给私有字段赋值不触发set }口诀属性set内部只能给字段赋值不能给属性赋值五、静态/非静态 数据独立性代码演示非静态属性每个对象独立数据People p1 new People(); p1.AddNum(); // p1.Num 1 People p2 new People(); p2.AddNum(); // p2.Num 1 // 输出都是1互不影响 Console.WriteLine(p1.GetNum()); Console.WriteLine(p2.GetNum());非静态一人一份各自独立如果是静态属性所有对象共享一份数据p1修改静态值 → p2读取到的也是修改后的值静态一改全改全局共享六、终极对比总表默写满分对比维度非静态实例成员静态static成员归属属于对象属于类调用方式对象名.成员类名.成员数据存储每个对象独立一份数据全局唯一一份所有对象共享访问权限可直接访问静态成员不可直接访问非静态需new对象创建时机new对象后产生类加载时就存在七、考前终极口诀静态归类不归对象全局共享只一份非静归对象每个实例独自享非静可直接用静态静态想用非静必须new属性set赋值给字段千万别写属性死循环八、简答题标准答案1. 静态成员和非静态成员的区别静态成员属于类全局唯一、所有对象共享一份数据通过类名调用非静态成员属于对象每个对象拥有独立数据通过对象调用。非静态方法可以直接访问静态成员静态方法不能直接访问非静态成员需要实例化对象才可访问。const常量 / readonly / static readonly 三者终极区别一、三种只读修饰符 代码对应定义// 1. 普通只读实例只读 public readonly int a 10; // 2. 静态只读 public static readonly int b 20; // 3. 常量 public const int c 30;二、逐条语法规则必考1. const 常量默认自带 static属于类必须在定义时直接赋值不能不赋值任何位置都不能修改构造函数也不能改调用方式类名.常量名编译阶段直接固定值不可变动2. readonly 实例只读属于对象实例可以定义时赋值只能在【无参/有参实例构造函数】中修改一次构造函数执行完毕后彻底禁止修改不能在静态构造函数修改3. static readonly 静态只读属于类可以定义时赋值只能在【静态构造函数】中修改绝对不能在普通实例构造函数修改全局唯一、所有对象共享三、你代码中的执行逻辑精讲public readonly int a 10; public static readonly int b 20; public const int c 30; // 实例构造 public People() { a 20; // 正确实例只读只能在这里改 // b 30; // 报错静态只读不能在实例构造修改 } // 静态构造 static People() { b 40; // 正确静态只读只能在这里改 }执行顺序与结果程序触发类使用 →静态构造函数先执行→ b40new 对象 → 实例构造执行 → a20输出结果 40---------------- 静态构造函数只能被调用一次... 20 40 30四、修改权限禁区超级易错类型定义赋值实例构造修改静态构造修改程序运行中修改const 常量必须赋值❌ 不能改❌ 不能改❌ 完全不能改readonly 实例只读可选✅ 可改一次❌ 不能改❌ 不能改static readonly 静态只读可选❌ 不能改✅ 可改一次❌ 不能改五、调用方式区别readonly对象调用p1.astatic readonly类名调用People.bconst类名调用People.c六、三者终极区别简答题满分1. const 常量编译期常量默认静态定义时必须赋值任何位置不可修改性能最高。2. readonly 实例只读字段属于对象仅可在实例构造函数中赋值修改一次运行期只读不同对象可以有不同数值。3. static readonly 静态只读字段属于类仅可在静态构造函数中赋值修改一次全局所有对象共享同一个值。七、满分背诵口诀const 常量编译定全程谁都不能动readonly 对象只读实例构造唯一动static readonly 类只读静态构造改一次构造结束全锁死运行期间不许动