Sérialisation et Désérialisation C# : Exemple Pratique
Sérialisation et Désérialisation en C#
La sérialisation et la désérialisation sont essentielles lorsque les données d'objet doivent circuler entre applications ou persister à travers les sessions. En C#, la sérialisation écrit l'état d'un objet sur un support de stockage — couramment un fichier — tandis que la désérialisation reconstruit l'objet à partir de cette représentation stockée.
Considérez une classe simple, Tutoriel, qui contient deux propriétés : ID et Name. En sérialisant une instance de cette classe dans un fichier, nous pouvons plus tard lire le fichier et recréer le même objet avec ses données d'origine intactes.
Comment Sérialiser un Objet en C#
Voici une procédure pas à pas qui démontre le processus dans une application console.
- Créer une classe
Tutorielavec les propriétésIDetName. - Instancier la classe, en assignant
ID = 1etName = ".Net". - Sérialiser l'objet dans un fichier nommé
Exemple.txt. - Désérialiser l'objet depuis le fichier et afficher ses valeurs sur la console.
Collez le code suivant dans votre fichier Program.cs.
Étape 1) Ajoutez la classe. La première étape est d'ajouter la classe qui sera sérialisée.

Explication du Code :
- La classe doit être marquée avec l'attribut
[Serializable]; sinon la sérialisation échouera. - Définir la classe
Tutorielavec deux champs :int IDetstring Name.
Étape 2) Créer l'objet et le sérialiser. À cette étape, nous instancions l'objet Tutoriel et l'écrivons dans Exemple.txt.

Explication du Code :
- Créer une instance de
Tutorielet définirID = 1etName = ".Net". - Instancier un
BinaryFormatter(note :BinaryFormatterest obsolète dans .NET 5+ ; envisagezSystem.Text.JsonouXmlSerializerpour le code de production). - Ouvrir un
FileStreamenFileMode.CreateetFileAccess.Writepour écrire les données binaires. - Appeler
formatter.Serializepour écrire l'objet dans le flux, puis fermer le flux.
Étape 3) Désérialiser l'objet. Finalement, relisez les données depuis le fichier pour vérifier le processus.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace DemoApplication {
[Serializable]
class Tutoriel {
public int ID;
public string Name;
static void Main(string[] args) {
Tutoriel obj = new Tutoriel();
obj.ID = 1;
obj.Name = ".Net";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("E:\\ExempleNouveau.txt", FileMode.Create, FileAccess.Write);
formatter.Serialize(stream, obj);
stream.Close();
stream = new FileStream("E:\\ExempleNouveau.txt", FileMode.Open, FileAccess.Read);
Tutoriel objnew = (Tutoriel)formatter.Deserialize(stream);
Console.WriteLine(objnew.ID);
Console.WriteLine(objnew.Name);
Console.ReadKey();
}
}
}
Explication du Code :
- Ouvrir le fichier en mode lecture.
- Désérialiser les données binaires en une instance de
Tutoriel. - Afficher
IDetNamesur la console.
L'exécution du programme dans Visual Studio produit la sortie suivante :
Sortie :

Comme montré, les valeurs ont été correctement récupérées depuis le fichier.
Résumé
La sérialisation écrit les données d'objet dans un fichier, tandis que la désérialisation relit ces données dans un objet. Cette technique fondamentale sous-tend de nombreux scénarios d'échange de données .NET.
Langue C
- Classes et objets C# : Fondations pour une POO robuste
- Maîtriser les classes et méthodes abstraites C# : Guide pratique
- Comprendre les classes et méthodes partielles C#
- Maîtriser les classes et méthodes sealed en C# : Quand les utiliser, exemples clairs et sécurité du code
- Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression
- Opérateurs C++ expliqués : Types, exemples et programmes d'exemple
- Struct vs Class en C++ : Différences Clés, Syntaxe et Cas d'Utilisation Optimaux
- Classes Abstraites C# : Tutoriel Pratique avec Exemples de Code
- Lecture de Fichiers en Java avec BufferedReader – Guide Pratique avec Exemples