C#面试题更新 2026-08-05

请解释 C# 中属性的定义及其作用,并说明属性与公共字段(field)之间的关键区别是什么?

技术原理技术选型C#

考察说明

考察对 C# 语言基础中属性与字段概念的理解,以及封装原则在实际编程中的应用。

回答思路

  1. 【回答框架 1】属性是 C# 中用于封装字段的成员,它通过访问器(get 和 set)控制字段的读写。属性看起来像字段,但实际上是方法,允许在赋值或读取时执行额外逻辑,如验证、计算或触发事件。
  2. 【回答框架 2】字段(field)是直接在类中声明的存储变量,没有访问控制逻辑,通常设置为 private,通过属性对外暴露。公共字段违反了封装原则,外部可以直接修改内部状态,无法控制数据有效性。
  3. 【回答框架 3】属性可以设置为只读(只有 get)或只写(只有 set),甚至可以具有不同访问级别,如 public getter 和 private setter。字段则必须声明为 public 才能被外部访问,但无法限制读写权限。
  4. 【回答框架 4】属性在序列化、数据绑定、日志记录等场景中更为灵活,因为可以自定义 getter 和 setter 的行为。而字段在性能上略有优势,但通常优先使用属性以保持代码的可维护性和安全性。
  5. 【关键点 1】属性是封装的实现方式,字段是数据存储。
  6. 【关键点 2】属性可以包含验证、计算等逻辑,字段是原始变量。
  7. 【关键点 3】属性支持只读、只写等访问限制,字段不能。
  8. 【关键点 4】属性可以响应值变化,字段不能。
  9. 【易错点 1】误区:将字段声明为 public 直接暴露,缺乏封装。
  10. 【易错点 2】忽略属性的业务逻辑,导致数据有效性校验缺失。
  11. 【易错点 3】混淆自动属性和字段:自动属性仍会生成隐藏字段,但语法简化。