工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C#シリアライゼーションとデシリアライゼーション:実践例で学ぶオブジェクト永続化

C#におけるシリアライゼーションとデシリアライゼーション

オブジェクトデータをアプリケーション間で移動させたり、セッション間で持続させたりする必要があるとき、シリアライゼーションとデシリアライゼーションは不可欠です。C#では、シリアライゼーションはオブジェクトの状態をストレージメディア(一般的にはファイル)に書き込み、デシリアライゼーションはその格納表現からオブジェクトを再構築します。

Tutorialというシンプルなクラスを考えます。これはIDとNameという2つのプロパティを保持します。このクラスのインスタンスをファイルにシリアライズすることで、後でファイルを読み取り、元のデータを保持したまま同じオブジェクトを再作成できます。

C#でオブジェクトをシリアライズする方法

以下はコンソールアプリケーションでのプロセスを示すステップバイステップウォークスルーです。

  1. IDとNameプロパティを持つTutorialクラスを作成。
  2. クラスをインスタンス化し、ID = 1、Name = ".Net"を割り当て。
  3. オブジェクトをExample.txtというファイルにシリアライズ。
  4. ファイルからオブジェクトをデシリアライズし、その値をコンソールに表示。

以下のコードをProgram.csファイルに貼り付けてください。

ステップ1) クラスを追加。最初のステップはシリアライズされるクラスを追加することです。

C#シリアライゼーションとデシリアライゼーション:実践例で学ぶオブジェクト永続化

コード解説:

  1. クラスには[Serializable]属性を付与必須。なければシリアライゼーション失敗。
  2. int IDとstring Nameの2フィールドを持つTutorialクラスを定義。

ステップ2) オブジェクトを作成しシリアライズ。このステップでTutorialオブジェクトをインスタンス化し、Example.txtに書き込みます。

C#シリアライゼーションとデシリアライゼーション:実践例で学ぶオブジェクト永続化

コード解説:

  1. Tutorialインスタンスを作成し、ID = 1、Name = ".Net"を設定。
  2. BinaryFormatterをインスタンス化(注:BinaryFormatterは.NET 5+で非推奨。本番コードではSystem.Text.JsonやXmlSerializerを検討)。
  3. FileMode.CreateとFileAccess.WriteでFileStreamをオープンし、バイナリデータを書き込み。
  4. formatter.Serializeでオブジェクトをストリームに書き込み、ストリームをクローズ。

ステップ3) オブジェクトをデシリアライズ。最後にファイルからデータを読み戻し、プロセスを検証します。

C#シリアライゼーションとデシリアライゼーション:実践例で学ぶオブジェクト永続化

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
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. 読み取りモードでファイルをオープン。
  2. バイナリデータをTutorialインスタンスにデシリアライズ。
  3. IDとNameをコンソールに出力。

Visual Studioでプログラム実行すると以下の出力:

出力:

C#シリアライゼーションとデシリアライゼーション:実践例で学ぶオブジェクト永続化

ご覧の通り、値がファイルから正しく取得されました。

まとめ

シリアライゼーションはオブジェクトデータをファイルに書き込み、デシリアライゼーションはそのデータをオブジェクトに読み戻します。この基本技術は多くの.NETデータ交換シナリオの基盤となっています。

C言語

  1. C# クラスとオブジェクト:堅牢な OOP の基礎
  2. C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
  3. C# 部分クラスと部分メソッドを理解する
  4. C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上
  5. C++演算子を徹底解説:種類、例、サンプルプログラム付き
  6. C++クラスとオブジェクト:コード例付き実践ガイド
  7. C++ structとclassの違い:構文、特徴、使い分けのベストプラクティス
  8. C#抽象クラス実践チュートリアル:コード例で理解する設計パターン
  9. Python type()とisinstance()の理解:実例付き解説
  10. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除
  11. Java BufferedReader でファイル読み込み:実践ガイドと例