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

请解释C#中序列化与反序列化的基本概念,并阐述在对象持久化场景下,具体可采用哪些实现方式?

技术原理C#

考察说明

考察对C#序列化核心概念的理解及实际应用能力。

回答思路

  1. 【回答框架 1】序列化是将对象状态转换为可存储或传输的格式(如二进制、XML、JSON)的过程,反序列化是其逆过程。它使得对象能够跨平台、跨进程或跨时间保存和重建。
  2. 【回答框架 2】在C#中,常见实现方式包括:BinaryFormatter(二进制格式,但因安全风险已不推荐)、XmlSerializer(XML格式,适合需要可读性的场景)、DataContractSerializer(用于WCF)以及Newtonsoft.Json或System.Text.Json(JSON格式,轻量且广泛使用)。
  3. 【回答框架 3】对象持久化通常指将对象状态保存到文件或数据库中。可通过文件流结合序列化器实现,例如将对象序列化后写入文件,或从文件读取并反序列化。需注意对象的可访问性(如[Serializable]特性)及版本兼容性。
  4. 【关键点 1】序列化是状态到字节/文本的转换,反序列化是重建对象。
  5. 【关键点 2】常用序列化方式有二进制、XML和JSON,各有适用场景。
  6. 【关键点 3】实现持久化需结合I/O操作,并考虑版本和安全性。
  7. 【易错点 1】BinaryFormatter存在安全漏洞,新版C#建议避免使用。
  8. 【易错点 2】未标记[Serializable]或缺少无参构造函数可能导致序列化失败。
  9. 【易错点 3】对象版本变化可能导致反序列化时类型不匹配或数据丢失。