C# BinaryFormatterとSerialize属性を用いてオブジェクトをシリアライズ、デシリアライズする

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

[Serializable]
class Student
{
    private Int32 no;
    private String name;
    public Student(Int32 no, String name)
    {
        this.no = no;
        this.name = name;
    }
    public Int32 No
    {
        get { return no; }
        set { no = value; }
    }
    public String Name
    {
        get { return name; }
        set { name = value; }
    }
    public override String ToString()
    {
        return String.Format("No:{0}, Name:{1}", no, name); ;
    }
}

class Program
{
    public static void Main()
    {
        using (FileStream fs = new FileStream(".\\students", FileMode.OpenOrCreate))
        {
            BinaryFormatter bf = new BinaryFormatter();

            for (Int32 i = 0; i < 5; i++ )
            {
                bf.Serialize(fs, new Student(i, "Student" + i));
                bf.Serialize(fs, new Student(i, "Student" + i));
            }
        }

        using (FileStream fs = new FileStream(".\\students", FileMode.OpenOrCreate))
        {
            BinaryFormatter bf = new BinaryFormatter();
            while (fs.Position < fs.Length)
            {
                Console.WriteLine( (Student)bf.Deserialize(fs) );
            }
        }
    }
}