实例字段和静态字段
想象你开了个学校每个学生都有概念比喻对应编程姓名、年龄、分数每个学生自己的属性实例字段学校名称、校规全校学生都一样属于学校整体静态字段一、实例字段Instance Field定义属于对象的字段。每个对象都有自己的副本互不影响。代码示例public class Student { // 实例字段 —— 每个学生对象都有一份 public string Name; public int Age; public double Score; } // 使用 Student s1 new Student(); s1.Name 张三; s1.Age 18; s1.Score 90; Student s2 new Student(); s2.Name 李四; s2.Age 20; s2.Score 85; // s1 和 s2 互不影响 Console.WriteLine(s1.Name); // 张三 Console.WriteLine(s2.Name); // 李四二、静态字段Static Field定义属于类本身的字段。所有对象共享同一份数据类在内存中只有一份。代码示例public class Student { // 实例字段 —— 每个学生不同 public string Name; public int Age; // 静态字段 —— 所有学生共享 public static string SchoolName 第一中学; public static int StudentCount 0; // 构造函数每创建一个学生计数1 public Student(string name, int age) { Name name; Age age; StudentCount; // 静态字段所有对象共享 } } // 使用 Student s1 new Student(张三, 18); Student s2 new Student(李四, 20); // 静态字段通过类名.访问而不是对象. Console.WriteLine(Student.SchoolName); // 第一中学 Console.WriteLine(Student.StudentCount); // 2两个学生 // ❌ 不推荐这样写但技术上可以 // Console.WriteLine(s1.StudentCount); // 也能访问但不规范特点通过类名.字段名访问所有对象共享同一份内存不需要创建对象就能访问程序启动时分配内存程序结束时释放核心区别对比对比项实例字段静态字段所属属于对象实例属于类本身访问方式对象.字段名类名.字段名数量每个对象都有一份整个程序只有一份内存分配创建对象时分配程序启动时分配是否需要 new必须先new对象不需要创建实例是否共享❌ 各对象独立✅ 所有对象共享典型用途存储对象特有的数据存储全局共享的数据经典应用场景实例字段场景public class PLCDevice { public string DeviceName; // 每个PLC有不同名字 public string IPAddress; // 每个PLC有不同IP public bool IsConnected; // 每个PLC连接状态不同 }静态字段场景public class AppConfig { public static string Version V2.1.0; // 全局版本号 public static int MaxConnectionCount 10; // 全局最大连接数 public static string DatabaseConnString; // 全局数据库连接串 }调用public class Logger { private static int _logCount 0; // 记录总日志条数 public static void Log(string message) { _logCount; Console.WriteLine($[{_logCount}] {message}); } } // 不需要 new直接调用 Logger.Log(系统启动); Logger.Log(用户登录); // 输出 // [1] 系统启动 // [2] 用户登录总结实例字段 → 我的每个对象各有一份静态字段 → 我们的所有对象共享一份