Erklären Sie die Serialisierung und Deserialisierung in C#

Erklären Sie die Serialisierung und Deserialisierung in C#
Serialisierung Bezieht sich auf den Akt der Umwandlung eines Objekts in ein Format, das übertragen oder gespeichert werden kann, während die Deserialisierung der Prozess der Konvertierung der serialisierten Daten in seine anfängliche Form ist.

Dieser Artikel wird erklären Serialisierung Und Deserialisierung in C# mit einem Beispiel.

Serialisierung in C#

Um ein Objekt in ein Format umzuwandeln, das über eine Netzwerkserialisierung gespeichert oder übertragen werden kann, wird verwendet, und dieses Format kann ein XML -Format, ein Binärformat oder ein anderes Format sein. Serialisierung wird für die Datenspeicherung und -übertragung verwendet und ist ein wichtiges Konzept in der C# -Programmierung.

Nehmen wir ein Beispiel, um die Serialisierung in C#zu verstehen. Angenommen, wir haben eine "Mitarbeiter" Klasse, die den Namen, die ID und das Gehalt des Mitarbeiters enthält:

mit System verwenden;
Verwenden von System.Io;
Verwenden von System.Laufzeit.Serialisierung;
Verwenden von System.Laufzeit.Serialisierung.JSON;
[DataContract]
Angestellter der öffentlichen Klasse

[DataMember]
public String Name get; Satz;
[DataMember]
public int id get; Satz;
[DataMember]
öffentliches Doppelgehalt get; Satz;

Klassenprogramm

statische void main (String [] args)

Mitarbeiter emp = neuer Mitarbeiter name = "mark", id = 005, Gehalt = 10000;
DataContractSerializer serializer = neuer DataContractSerializer (Typof (Mitarbeiter));
Verwenden Sie (MemoryStream Stream = New MemoryStream ())

Serializer.WriteObject (stream, emp);
Byte [] serializedData = Stream.ToArray ();
Konsole.WriteLine ("Serialisierte Daten:");
Konsole.WriteLine (BitConverter.TOSTRING (serializedData).Ersetzen("-", ""));
// Schreiben Sie die serialisierten Daten mit FileStream in eine Datei
String Dateiname = "Serialisierte Daten.Behälter";
String filepath = Pfad.Kombinieren (Umwelt.CurrentDirectory, Dateiname);
Verwenden Sie (fileStreamFilEstream = neuer FileStream (FilePath, FilEmode.Erstellen))

Datenfluss.Schreiben Sie (serializedData, 0, serializedData.Länge);

Konsole.WriteLine ($ "Serialisierte Daten, die in Datei gespeichert sind: filepath");


Der obige C# Code zeigt, wie ein Objekt einer benannten benannten Klasse serialisiert wird "Mitarbeiter" Verwendung der DatacontractSerializer Klasse aus dem System.Laufzeit.Serialisierung Namespace. Die Klasse hat drei Eigenschaften: Name, ID und Gehalt, die alle mit dem gekennzeichnet sind DataMember Attribut, um anzuzeigen, dass sie in den Serialisierungsprozess einbezogen werden sollten.

Im Main eine Instanz der Mitarbeiter Die Klasse wird erstellt und ihre Eigenschaften werden mit Beispieldaten und die festgelegt DatacontractSerializer wird dann verwendet, um das Objekt in ein Byte -Array zu serialisieren, das mit einem FileStream in einer Datei gespeichert wird. Der Pfad der Datei wird mit dem angegeben Weg.Kombinieren Und Umfeld.Aktuelles Verzeichnis() Funktionen und dann werden die serialisierten Daten zusammen mit dem Dateipfad in der Konsole angezeigt:

Deserialisierung in C#

Deserialisierung ist der Prozess des Konvertierens serialisierter Daten, die normalerweise in einer Datei gespeichert oder über ein Netzwerk übertragen werden, wieder in sein ursprüngliches Formular. In C#der Prozess von Deserialisierung beinhaltet ein Objekt aus seiner serialisierten Form, das mit verschiedenen integrierten Klassen wie dem erreicht werden kann DatacontractSerializer oder der XmlSerializer.

Nehmen wir ein Beispiel, um die Deserialisierung in C# zu verstehen und dieselbe serialisierte Datei zu verwenden, die wir zuvor erstellt haben, und deserialisieren sie unten. Im Folgenden finden Sie den Code:

mit System verwenden;
Verwenden von System.Io;
Verwenden von System.Laufzeit.Serialisierung;
Verwenden von System.Laufzeit.Serialisierung.JSON;
[DataContract]
Angestellter der öffentlichen Klasse

[DataMember]
public String Name get; Satz;
[DataMember]
public int id get; Satz;
[DataMember]
öffentliches Doppelgehalt get; Satz;

Klassenprogramm

statische void main (String [] args)

DataContractSerializer serializer = neuer DataContractSerializer (Typof (Mitarbeiter));
// Lesen Sie die serialisierten Daten mit FileStream aus der Datei aus
String Dateiname = "Serialisierte Daten.Behälter";
String filepath = Pfad.Kombinieren (Umwelt.CurrentDirectory, Dateiname);
Verwenden Sie (fileStreamReadstream = new FileStream (FilePath, FilEmode.Offen))

Mitarbeiter des Eerializedemps = (Mitarbeiter) Serializer.ReadObject (ReadStream);
Konsole.WriteLine ($ "Deserialized Angestellter: Name - DeserializedEmp.Name, ID - DeserializedEmp.ID, Gehalt - DeserializedEmp.Gehalt");


Der obige C# Code verwendet den DatacontractSerializer Klasse, um ein "Mitarbeiter" -Objekt zu deserialisieren, das zuvor serialisiert und in einer binären Datei gespeichert wurde. Die Mitarbeiterklasse ist definiert mit DataMember Attribute für seine Eigenschaften, um anzuzeigen, dass diese serialisiert/deserialisiert werden sollten. Die Hauptstufe erstellt eine Instanz des Serializers und öffnet die Binärdatei mithilfe eines FileStream und die Funktion des Serializer ReadObject () wird dann verwendet, um die serialisierten Daten zu lesen und ein neues Mitarbeiterobjekt zu erstellen. Das Mitarbeiterobjekt wird dann in die Konsole gedruckt, um zu bestätigen, dass es erfolgreich deserialisiert wurde.

Abschließende Gedanken

In C# Programmierung, Serialisierung Und Deserialisierung sind wichtige Konzepte für die Datenspeicherung und -übertragung. Serialisierung beinhaltet die Umwandlung eines Objekts in ein Format, das für die Speicherung oder Übertragung geeignet ist, während Deserialisierung beinhaltet den umgekehrten Prozess der Konvertierung der serialisierten Daten in ihre ursprüngliche Form zurück. In dem angegebenen Code -Beispiel die DatacontractSerializer Die Klasse wird verwendet, um eine Instanz der Mitarbeiterklasse in ein Byte -Array zu serialisieren, das dann in einer Datei gespeichert wird. Der Deserialisierung Bei Prozess werden die serialisierten Daten aus der Datei gelesen und denselben Serializer verwendet, um sie wieder in eine Instanz der Mitarbeiterklasse zu deverialisieren.