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

例を使用した C# でのシリアル化と逆シリアル化

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

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

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

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

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

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

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

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

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

    コードの説明:-

    <オール>
  • シリアライズが必要なクラスには、[Serializable] 属性が必要です。これは C# のキーワードです。このキーワードは、Tutorial クラスに追加されます。この属性を指定しないと、クラスをシリアル化しようとするとエラーが発生します。
  • 次はシリアライズするクラスの定義です。ここでは、「Tutorial」というクラスを定義し、2 つのプロパティ (1 つは「ID」、もう 1 つは「名前」) を提供しています。
  • ステップ 2) オブジェクトを作成します。
    このステップでは、まずチュートリアル クラスのオブジェクトを作成し、それを Example.txt というファイルにシリアル化します。

    コードの説明:-

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

    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();
      }
     }
    }

    コードの説明:-

    <オール>
  • 「ストリーム」オブジェクトを作成して、ファイル Example.txt を読み取り専用モードで開きます。
  • 次に、Example.txt ファイルに格納されているオブジェクトを逆シリアル化するために使用されるフォーマッタ クラスを使用します。返されるオブジェクトはオブジェクト objnew に設定されます。
  • 最後に、「ID」および「name」プロパティを使用して、オブジェクト「objnew」のプロパティをコンソールに表示します。
  • 上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、以下の出力が得られます。

    出力:-

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

    まとめ

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

    デシリアライゼーションは、ファイルからオブジェクトを復元するために使用されます。


    C言語

    1. C# クラスとオブジェクト
    2. C# の抽象クラスとメソッド
    3. C# 部分クラスと部分メソッド
    4. C# の封印されたクラスとメソッド
    5. Java ファイル クラス
    6. C++ の演算子と例:型とプログラムとは
    7. C++ クラスとオブジェクトと例
    8. 構造体とクラスの違い:C++ の例で説明
    9. 例を含む C# 抽象クラスのチュートリアル:抽象化とは?
    10. Java BufferedReader:例を使用して Java でファイルを読み取る方法
    11. Python の type() と isinstance() と例