实例属性public class Student { // 私有字段一般用 private 隐藏 private string _name; private int _score; // 实例属性 —— 每个对象各有一份 public string Name { get { return _name; } set { _name value; } } public int Score { get { return _score; } set { if (value 0 || value 100) throw new ArgumentException(分数必须在 0~100 之间); _score value; } } // 只读属性只有 get没有 set public string Grade { get { if (_score 90) return A; if (_score 80) return B; if (_score 60) return C; return D; } } // 自动属性编译器自动生成私有字段 public string StudentId { get; set; } // 只读自动属性只能在构造函数中赋值 public DateTime CreatedTime { get; } public Student() { CreatedTime DateTime.Now; } } // 使用 Student s1 new Student(); s1.Name 张三; // ✅ 调用 set s1.Score 95; // ✅ 通过校验 // s1.Score 150; // ❌ 抛出异常 Console.WriteLine(s1.Name); // ✅ 调用 get输出张三 Console.WriteLine(s1.Grade); // ✅ 计算属性输出A Student s2 new Student(); s2.Name 李四; // s1 和 s2 互不影响特点必须通过对象.属性名访问每个对象有自己独立的值可以加校验逻辑、计算逻辑静态属性public class AppConfig { // 私有静态字段 private static string _appName 上位机监控系统; private static int _instanceCount 0; // 静态属性 public static string AppName { get { return _appName; } set { _appName value; } } // 只读静态属性只有 get public static string Version { get { return V2.1.0; } } // 静态自动属性 public static string DatabaseConnection { get; set; } // 静态只读自动属性 public static DateTime ProgramStartTime { get; } DateTime.Now; // 计算静态属性 public static int ActiveInstances { get { return _instanceCount; } } // 静态构造函数 static AppConfig() { DatabaseConnection Serverlocalhost;DatabaseMyDB;; } } // 使用 —— 不需要 new直接用 类名. 访问 Console.WriteLine(AppConfig.AppName); // 上位机监控系统 Console.WriteLine(AppConfig.Version); // V2.1.0 Console.WriteLine(AppConfig.DatabaseConnection); // Serverlocalhost;... AppConfig.AppName 新系统名; // ✅ 可以修改特点通过类名.属性名访问所有对象共享同一份数据不需要创建对象就能访问核心区别对比对比项实例属性静态属性所属属于对象属于类访问方式对象.属性名类名.属性名数据存储每个对象各一份整个程序只有一份是否需要 new✅ 需要先创建对象❌ 不需要是否共享❌ 互不影响✅ 所有对象共享典型用途对象自己的状态全局配置、计数、共享数据能否访问实例成员✅ 可以❌ 不能直接访问实例成员能否访问静态成员✅ 可以✅ 可以上位机项目中的系统配置public class SystemManager { // 实例属性每台设备不同 public string DeviceName { get; set; } public string IPAddress { get; set; } public bool IsConnected { get; set; } // 静态属性系统全局配置 public static string SystemVersion { get; } V3.0.0; public static int HeartbeatInterval { get; set; } 1000; public static int MaxRetryCount { get; set; } 3; private static int _onlineCount 0; public static int OnlineDeviceCount { get { return _onlineCount; } } public void Connect() { IsConnected true; _onlineCount; // 静态字段全局计数 } public void Disconnect() { IsConnected false; _onlineCount--; } }单例模式静态属性的经典应用public class ConfigManager { private static ConfigManager _instance; // 私有构造函数外部不能 new private ConfigManager() { // 从配置文件读取配置 } // 静态属性获取唯一的实例 public static ConfigManager Instance { get { if (_instance null) _instance new ConfigManager(); return _instance; } } // 实例属性各配置项 public string ConnectionString { get; private set; } public int Timeout { get; private set; } } // 使用 —— 全局只有这一个对象 string conn ConfigManager.Instance.ConnectionString;面试题1. 静态属性中能访问实例属性吗public class Test { public int InstanceValue { get; set; } public static int StaticValue { get; set; } public static void StaticMethod() { // ❌ 编译错误静态方法/属性中不能访问实例成员 // Console.WriteLine(InstanceValue); // ✅ 可以访问静态成员 Console.WriteLine(StaticValue); } public void InstanceMethod() { // ✅ 实例方法中可以访问静态成员 Console.WriteLine(StaticValue); // ✅ 也可以访问实例成员 Console.WriteLine(InstanceValue); } }原因静态成员属于类不需要对象存在而实例成员依赖具体对象静态成员不知道哪个对象。2. 自动属性的区别public class Demo { // 实例自动属性 public string Name { get; set; } // 静态自动属性 public static string AppName { get; set; } } // 实例属性每个对象不同 var d1 new Demo { Name A }; var d2 new Demo { Name B }; // 静态属性所有对象共享 Demo.AppName 全局名称; Console.WriteLine(Demo.AppName); // 全局名称