Serialisierung – binär

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

// Beispielobjekt, was geladen und gespeichert werden soll
// wichtig ist hier die Angabe von [Serializable]
[Serializable]
class Viereck
{
    private int _a;
    private int _b;
    private string _Name;

    public Viereck(int a, int b, string Name)
    {
        _a = a;
        _b = b;
        _Name = Name;
    }

    public void Print()
    {
        int A = _a * _b;

        Console.WriteLine("{3}: {0} x {1} = {2}", _a, _b, A, _Name);
    }
}

// Objekt serialisiert speichern
private void btnSave_Click(object sender, EventArgs e)
{
    // Objekt anlegen
    Viereck V = new Viereck(2, 4, "kleines Viereck");

    // Stream öffnen
    FileStream fsW = new FileStream("c:\\viereck.dat", FileMode.Create);

    // Objekt binär serialisieren
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(fsW, V);

    // Stream schließen
    fsW.Flush();
    fsW.Close();
}

// Objekt laden und deserialisieren
private void btnLoad_Click(object sender, EventArgs e)
{
    // Stream öffnen
    FileStream fsR = new FileStream("c:\\viereck.dat", FileMode.Open);

    // Objekt deserialisieren
    BinaryFormatter bf = new BinaryFormatter();
    Object o = bf.Deserialize(fsR);
    Viereck V_neu = o as Viereck;

    // wenn die Deserialisierung funktioniert hat
    // Testdaten ausgeben (Print())
    if (V_neu != null)
    {
        V_neu.Print();
    }

    // Stream schließen
    fsR.Close();
}