Serialização e Desserialização em C#: Exemplo Prático
Serialização e Desserialização em C#
Serialização e desserialização são essenciais quando dados de objeto devem mover entre aplicações ou persistir entre sessões. Em C#, serialização escreve o estado de um objeto para um meio de armazenamento — comumente um arquivo — enquanto desserialização reconstrói o objeto a partir dessa representação armazenada.
Considere uma classe simples, Tutorial, que mantém duas propriedades: ID e Name. Ao serializar uma instância desta classe para um arquivo, podemos depois ler o arquivo e recriar o mesmo objeto com seus dados originais intactos.
Como Serializar um Objeto em C#
Abaixo está um passo a passo que demonstra o processo em uma aplicação console.
- Crie uma classe
Tutorialcom as propriedadesIDeName. - Instancie a classe, atribuindo
ID = 1eName = ".Net". - Serializar o objeto para um arquivo chamado
Example.txt. - Desserializar o objeto do arquivo e exibir seus valores no console.
Cole o seguinte código no seu arquivo Program.cs.
Passo 1) Adicione a classe. O primeiro passo é adicionar a classe que será serializada.

Explicação do Código:
- A classe deve ser marcada com o atributo
[Serializable]; caso contrário, a serialização falhará. - Defina a classe
Tutorialcom dois campos:int IDestring Name.
Passo 2) Crie o objeto e serialize-o. Neste passo, instanciamos o objeto Tutorial e o escrevemos em Example.txt.

Explicação do Código:
- Crie uma instância de
Tutoriale definaID = 1eName = ".Net". - Instancie um
BinaryFormatter(nota:BinaryFormatteré obsoleto no .NET 5+; considereSystem.Text.JsonouXmlSerializerpara código de produção). - Abra um
FileStreamemFileMode.CreateeFileAccess.Writepara escrever os dados binários. - Chame
formatter.Serializepara escrever o objeto no stream, depois feche o stream.
Passo 3) Desserialize o objeto. Finalmente, leia os dados de volta do arquivo para verificar o processo.

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();
}
}
}
Explicação do Código:
- Abrir o arquivo em modo leitura.
- Desserializar os dados binários de volta em uma instância
Tutorial. - Imprimir
IDeNameno console.
Executar o programa no Visual Studio produz a seguinte saída:
Saída:

Como mostrado, os valores foram corretamente recuperados do arquivo.
Resumo
Serialização escreve dados de objeto em um arquivo, enquanto desserialização lê esses dados de volta em um objeto. Esta técnica fundamental sustenta muitos cenários de troca de dados no .NET.
Linguagem C
- Classes e Objetos em C#: Fundamentos para POO Robusta
- Dominando Classes e Métodos Abstratos em C#: Guia Prático
- Entendendo Classes e Métodos Parciais em C#
- Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
- Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão
- Operadores em C++ Explicados: Tipos, Exemplos e Programas Práticos
- C++ Struct vs Class: Diferenças Principais, Sintaxe e Melhores Casos de Uso
- Classes Abstratas em C#: Tutorial Prático com Exemplos de Código
- Lendo Arquivos em Java com BufferedReader – Guia Prático com Exemplos
- Entendendo type() e isinstance() em Python: Exemplos Práticos