永続ストレージ

オブジェクトのフィールドの値をディスクに格納しておき、後でこのデータを取得する必要が生じることはよくあります。これはシリアル化を使用しなくても簡単に実現できますが、シリアル化を使用しない方法は煩雑でエラーの原因となることが多く、オブジェクトの階層を追跡する必要がある場合にはさらに複雑になります。何千ものオブジェクトを含む大規模なビジネス アプリケーションを作成し、それぞれのオブジェクトのフィールドやプロパティをディスクに保存したり、ディスクから復元したりするコードを記述することを想像してみてください。シリアル化は、この目的を実現するための便利なメカニズムを提供します。

共通言語ランタイムは、オブジェクトがメモリに格納される方法を管理し、リフレクションを使用して自動シリアル化のメカニズムを提供します。オブジェクトをシリアル化すると、クラスの名前、アセンブリ、およびそのクラス インスタンスのすべてのデータ メンバーがストレージに書き込まれます。オブジェクトのメンバー変数には、他のインスタンスへの参照が格納されていることがよくあります。クラスをシリアル化するとき、シリアル化エンジンは、既にシリアル化されている参照先オブジェクトを追跡し、同じオブジェクトが複数回シリアル化されないようにします。.NET Framework に用意されているシリアル化アーキテクチャは、オブジェクト グラフおよび循環参照を自動的に正しく処理します。オブジェクト グラフに対する唯一の要件は、シリアル化されたオブジェクトによって参照されるすべてのオブジェクトを、Serializable としてもマークすることです。詳細については、「基本的なシリアル化」を参照してください。Serializable としてマークしないと、マークされていないオブジェクトをシリアライザーがシリアル化しようとしたときに例外がスローされます。

シリアル化されたクラスを逆シリアル化すると、そのクラスが再作成され、すべてのデータ メンバーの値は自動的に復元されます。

参照

その他のリソース

シリアル化の概念
Remote Objects
XML シリアル化および SOAP シリアル化