C# でのシリアル化と逆シリアル化の例

C# でのシリアル化と逆シリアル化

シリアル化と逆シリアル化の概念は、オブジェクトに関連するデータをあるアプリケーションから別のアプリケーションに送信する必要がある場合に常に使用されます。 シリアル化は、アプリケーション データをファイルにエクスポートするために使用されます。 その後、宛先アプリケーションは逆シリアル化を使用して、さらに使用するためにアプリケーションからデータを抽出します。

シリアル化は、C# クラス オブジェクトをファイルに書き込むかシリアル化する概念です。 Tutorial という C# クラスがあるとします。 そして、クラスには ID とチュートリアル名の 2 つのプロパティがあります。

シリアル化を使用すると、Tutorial クラスのデータ プロパティをファイルに直接書き込むことができます。 逆シリアル化は、ファイルからデータを読み取り、Tutorial オブジェクトを再度構築するために使用されます。

C# でオブジェクトをシリアル化する方法

これを実現する方法の例を見てみましょう。

この例では、コード内で以下の高レベルの手順を実行します。

  1. ID と Name という 2 つのプロパティを持つ Tutorial という名前のクラスを作成します。
  2. 次に、クラスからオブジェクトを作成し、ID プロパティに値「1」を割​​り当て、name プロパティに値「.Net」を割り当てます。
  3. 次に、シリアル化を使用して、上記のオブジェクトを Example.txt というファイルにシリアル化します。
  4. 最後に、逆シリアル化を使用してファイルからオブジェクトを逆シリアル化し、コンソールに値を表示します。


コンソール アプリケーションの Program.cs ファイルに以下のコードを入力します。

ステップ1) クラスを追加します。

最初のステップは、シリアル化に使用されるクラスを追加することです。

C# でオブジェクトをシリアル化する

コードの説明:-

  1. シリアル化が必要なクラスには[Serializable]属性が必要です。 これは C# のキーワードです。 このキーワードは Tutorial クラスに付加されます。 この属性を指定しないと、クラスをシリアル化しようとするとエラーが発生します。
  2. 次にシリアル化するクラスの定義です。 ここでは「Tutorial」というクラスを定義し、2 つのプロパティ (XNUMX つは「ID」、もう XNUMX つは「Name」) を提供します。

ステップ2) オブジェクトを作成します。

このステップでは、まず Tutorial クラスのオブジェクトを作成し、それを Example.txt というファイルにシリアル化します。

C# でオブジェクトをシリアル化する

コードの説明:-

  1. まず、Tutorial クラスのオブジェクトを作成します。 次に、値「1」を ID に割り当て、「.net」を name プロパティに割り当てます。
  2. 次に、オブジェクトをシリアル化またはバイナリ形式に変換するために使用されるフォーマッタ クラスを使用します。 シリアル化中のファイル内のデータはバイナリ形式で行われます。 次に、ファイル ストリーム オブジェクトを作成します。 ファイル ストリーム オブジェクトは、書き込み目的でファイル Example.txt を開くために使用されます。 キーワード FileMode.Create および FileMode.Write は、ファイルを書き込み目的で開く必要があることを明確に示すために使用されます。
  3. 最後に、Serialize メソッドを使用してバイナリ データをファイルに転送します。 次に、書き込みが行われたため、ストリームを閉じます。 操作 完了です。

ステップ3) 逆シリアル化を使用します。

最後に、データがファイル内に存在することを確認するために、逆シリアル化を使用してファイルからオブジェクトを逆シリアル化します。

C# でオブジェクトをシリアル化する

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  [Serializable]
  class Tutorial
  {
  public int ID;
  public String Name;
   static void Main(string[] args)
   {
    Tutorial obj = new Tutorial();
    obj.ID = 1;
    obj.Name = ".Net";

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);

    formatter.Serialize(stream, obj);
    stream.Close();

    stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);
    Tutorial objnew = (Tutorial)formatter.Deserialize(stream);

    Console.WriteLine(objnew.ID);
    Console.WriteLine(objnew.Name);

    Console.ReadKey();
  }
 }
}

コードの説明:-

  1. オブジェクトを作成します。」流れ」をクリックして、ファイル Example.txt を読み取り専用モードで開きます。
  2. 次に、オブジェクトを逆シリアル化するために使用されるフォーマッタ クラスを使用します。このクラスは Example.txt ファイルに保存されています。 返されるオブジェクトはオブジェクト objnew に設定されます。
  3. 最後に、「ID」プロパティと「name」プロパティを使用して、オブジェクト「objnew」のプロパティをコンソールに表示します。

上記のコードを設定し、プロジェクトを実行すると、 Visual Studioの、以下の出力が得られます。

出力:-

C# でオブジェクトをシリアル化する

上記の出力から、ファイルの値が適切に逆シリアル化され、コンソールに表示されていることがわかります。

製品概要

シリアル化は、クラス オブジェクトをファイルに書き込むために使用されます。

逆シリアル化は、ファイルからオブジェクトを回復するために使用されます。