C#怎么使用属性Property C#自动属性和完整属性的区别get set怎么用【基础】
自动属性用{ get; set; }语法适合无逻辑的简单读写需校验、事件、懒加载时用完整属性访问修饰符可单独设置注意序列化和绑定对getter的要求。自动属性怎么写什么时候该用自动属性是 C# 最常用、最省事的属性写法编译器会帮你生成私有后备字段和默认的 get/set 实现。它适合“只做简单读写、不加逻辑、不干预赋值过程”的场景。常见错误以为自动属性能直接初始化非空引用类型比如 Liststring结果运行时报 NullReferenceException。public string Name { get; set; } —— 最简形式背后有编译器生成的隐藏字段public int Age { get; private set; } 18; —— 只读属性外部不可改支持内联初始化public Liststring Tags { get; set; } new Liststring(); —— 必须显式初始化否则实例化后 Tags 是 null完整属性手动实现 get/set解决什么问题当你需要在取值或赋值时执行逻辑比如校验、触发事件、懒加载、转换数据格式就必须写完整属性。这时候你完全控制字段访问流程但也要自己管理后备字段。容易踩的坑忘记在 set 中给后备字段赋值或者误用属性名本身导致无限递归。必须声明一个私有字段如 private string _name;get 和 set 都操作它set 中别写 Name value;这会调用自身属性栈溢出校验逻辑建议放在 set 里比如if (value null) throw new ArgumentNullException(nameof(value));懒加载常见写法private Listint _items; public Listint Items _items ?? new Listint();get/set 访问修饰符不同会怎样可以单独给 get 或 set 设访问级别这是控制封装粒度的关键手段。不是语法糖是真实影响调用方能否读/写。 RedClaw 百度推出的手机端万能AI Agent助手