Objetos serializables

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
// Añadir librerías
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace GuardaObj
{

    [Serializable]
    public class Persist02
    {
        int numero;

        public void SetNumero(int n)
        {
            numero = n;
        }
        public int GetNumero()
        {
            return numero;
        }

        public static void Guardar(string nombre, Persist02 objeto)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream(nombre, FileMode.Create, 
                FileAccess.Write, FileShare.None);
            formatter.Serialize(stream, objeto);
            stream.Close();
        }
        public static Persist02 Cargar(string nombre) {
            Persist02 objeto;
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream(nombre, FileMode.Open,
                FileAccess.Read, FileShare.Read);
            objeto = (Persist02)formatter.Deserialize(stream);
            stream.Close();
            return objeto;
        }

        static void Main(string[] args)
        {
            // Creo el objeto ejemplo y lo guardo en el fichero ejemplo.dat
            Persist02 ejemplo = new Persist02();
            ejemplo.SetNumero(5);
            Console.WriteLine("Valor: {0}", ejemplo.GetNumero());
            Guardar("ejemplo.dat", ejemplo);

            // Creo el objeto ejemplo2 
            Persist02 ejemplo2 = new Persist02();
            Console.WriteLine("Valor 2: {0}", ejemplo2.GetNumero());

            // Leo de ejemplo.dat el objeto antes guardado "ejemplo" y 
            // lo almaceno en ejemplo2
            ejemplo2 = Cargar("ejemplo.dat");
            Console.WriteLine("Y ahora: {0}", ejemplo2.GetNumero());
            Console.ReadKey();

        }
    }
}