Serialización y Deserialización en C#: Un Ejemplo Práctico
Serialización y Deserialización en C#
La serialización y deserialización son esenciales cuando los datos de objeto deben moverse entre aplicaciones o persistir entre sesiones. En C#, la serialización escribe el estado de un objeto a un medio de almacenamiento—comúnmente un archivo—mientras la deserialización reconstruye el objeto desde esa representación almacenada.
Considere una clase simple, Tutorial, que contiene dos propiedades: ID y Name. Al serializar una instancia de esta clase a un archivo, luego podemos leer el archivo y recrear el mismo objeto con sus datos originales intactos.
Cómo Serializar un Objeto en C#
A continuación un recorrido paso a paso que demuestra el proceso en una aplicación de consola.
- Crear una clase
Tutorialcon las propiedadesIDyName. - Instanciar la clase, asignando
ID = 1yName = ".Net". - Serializar el objeto a un archivo llamado
Example.txt. - Deserializar el objeto desde el archivo y mostrar sus valores en la consola.
Pegue el siguiente código en su archivo Program.cs.
Paso 1) Añada la clase. El primer paso es añadir la clase que será serializada.

Explicación del Código:
- La clase debe marcarse con el atributo
[Serializable]; de lo contrario la serialización fallará. - Definir la clase
Tutorialcon dos campos:int IDystring Name.
Paso 2) Crear el objeto y serializarlo. En este paso, instanciamos el objeto Tutorial y lo escribimos en Example.txt.

Explicación del Código:
- Crear una instancia de
Tutorialy establecerID = 1yName = ".Net". - Instanciar un
BinaryFormatter(nota:BinaryFormatterestá obsoleto en .NET 5+; considereSystem.Text.JsonoXmlSerializerpara código de producción). - Abrir un
FileStreamenFileMode.CreateyFileAccess.Writepara escribir datos binarios. - Llamar a
formatter.Serializepara escribir el objeto en el stream, luego cerrar el stream.
Paso 3) Deserializar el objeto. Finalmente, leer los datos de vuelta del archivo para verificar el proceso.

using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace DemoApplication { [Serializable] class Tutorial { public int ID; public string Name; static void Main(string[] args) { Tutorial obj = new Tutorial(); obj.ID = 1; obj.Name = ".Net"; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("E:\\ExampleNew.txt", FileMode.Create, FileAccess.Write); formatter.Serialize(stream, obj); stream.Close(); stream = new FileStream("E:\\ExampleNew.txt", FileMode.Open, FileAccess.Read); Tutorial objnew = (Tutorial)formatter.Deserialize(stream); Console.WriteLine(objnew.ID); Console.WriteLine(objnew.Name); Console.ReadKey(); } } } Explicación del Código:
- Abrir el archivo en modo lectura.
- Deserializar los datos binarios de vuelta a una instancia de
Tutorial. - Imprimir el
IDyNameen la consola.
Ejecutar el programa en Visual Studio produce la siguiente salida:
Salida:

Como se muestra, los valores fueron recuperados correctamente del archivo.
Resumen
La serialización escribe datos de objeto a un archivo, mientras la deserialización lee esos datos de vuelta a un objeto. Esta técnica fundamental sustenta muchos escenarios de intercambio de datos en .NET.
Lenguaje C
- Clases y objetos en C#: Fundamentos para POO robusta
- Dominando clases y métodos abstractos en C#: Guía práctica
- Entendiendo clases y métodos parciales en C#
- Dominando clases y métodos sealed en C#: Cuándo usarlos, ejemplos claros y mejora de seguridad y rendimiento
- Operadores en C++ explicados: Tipos, ejemplos y programas de muestra
- Clases y objetos en C++: Guía práctica con ejemplos de código
- Struct vs Class en C++: Diferencias Clave, Sintaxis y Mejores Casos de Uso
- Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código
- Entendiendo type() e isinstance() en Python: ejemplos prácticos
- Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos