ホームページ >バックエンド開発 >C#.Net チュートリアル >C# オブジェクトのシリアル化
オブジェクトをシーケンスまたはバイト ストリームに変換するために使用されるプロセスは、シリアル化と呼ばれます。オブジェクトをデータベース、ファイル、またはメモリに送信するには、シリアル化を使用します。必要なときにオブジェクトを正確に再作成または回復するには、オブジェクトの状態を保存するシリアル化が重要な役割を果たします。このステートメントを通じて、Web サービスを使用すると、あるドメインから別のドメインにオブジェクトを単純に転送するだけで、オブジェクトを任意の遠隔地に転送できることを意味しました。シリアル化の逆のプロセスは、シリアル化されたバイト シーケンスをオブジェクトに変換するプロセスであるため、逆シリアル化として知られています。
C# オブジェクト シリアル化構文:
C# でのオブジェクトのシリアル化の場合、[Serializable] と呼ばれる属性。属性が正当な方法で言及されていない場合、実行時に SerializableException がスローされます。
以下の構文:
public static void SomeData() { string aoo = "Heyoo! Thank you for visiting us...."; FileStream boo = new FileStream(@"D:\EduCBA.txt", FileMode.Create,FileAccess.Write, FileShare.None); BinaryFormatter coo = new BinaryFormatter(); coo.Serialize(boo, aoo); boo.Close(); }
C# オブジェクトの逆シリアル化構文:
以下の構文:
public static void AnotherData() { FileStream boo = new FileStream(@"D:\EduCBA.txt", FileMode.Open,FileAccess.Read, FileShare.Read); BinaryFormatter doo = new BinaryFormatter(); string eoo = ""; eoo = (string)doo.Deserialize(boo); boo.Close(); Console.WriteLine("EduCBA’s-se-ria-li-za-tion-&-de-se-ria-li-za-tion-in-C#-exam-ple"); Console.WriteLine("\n"); Console.WriteLine(eoo); }
C# オブジェクトのシリアル化の例について説明します。
以下のコードでは、EduCBA クラスをシリアル化する必要があるため、[Serializable] を使用しています。コードの実行後にエラーが発生しないようにするには、この属性に言及する必要があります。シリアル化するクラスの属性を述べた後、クラスの 4 つのプロパティ、つまり文字列の「CourseName1」と整数値の「CoursePrice1」、および同様に文字列の「CourseName2」と整数の「CoursePrice2」を説明しました。価値。ファイル「E:EDUCBA.txt」を読み取り専用モードで開くには、オブジェクト「hello」が作成され、最後に、前述のプロパティを使用して「yum」が表示されます。
コード:
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 Careerplan { [Serializable] class EduCBA { public String CourseName1; public int CoursePrice1; public String CourseName2; public int CoursePrice2; static void Main(string[] rahul) { EduCBA yum = new EduCBA(); yum.CourseName1 = "C# Training"; yum.CoursePrice1 = 25900; yum.CourseName2 = "C++ Training"; yum.CoursePrice2 = 28490; IFormatter formatter = new BinaryFormatter(); Stream hello = new FileStream(@"E:\EDUCBA.txt",FileMode.Create,FileAccess.Write, FileShare.None); formatter.Serialize(hello, yum); hello.Close(); hello = new FileStream(@"E:\EDUCBA.txt",FileMode.Open,FileAccess.Read, FileShare.Read); hello.Close(); Console.WriteLine(yum.CourseName1); Console.WriteLine(yum.CoursePrice1); Console.WriteLine(yum.CourseName2); Console.WriteLine(yum.CoursePrice2); Console.ReadKey(); } } }
出力:
以下のコードでは、クラス CBA をシリアル化する必要があるため、[Serializable] を使用しています。コードの実行後にエラーが発生しないようにするには、この属性に言及する必要があります。シリアル化するクラスの属性について述べた後、クラスの 9 つのプロパティについて説明しました。これらは整数値の「student_ID1」、文字列の「student_name1」、および数値が含まれることを意味する double 値の「CGPA1」です。小数点と同様に、「student_ID2」は整数値、「student_name2」は文字列、「CGPA2」は double 値、「student_ID3」は整数、「student_name3」は文字列、「CGPA3」は double 値です。ファイル「E:EDUCBA.txt」を読み取り専用モードで開くには、オブジェクト hello とオブジェクト「learn」が作成され、最後に、別の行内で前述したプロパティを使用して「ID」を表示します。データが実際に何を表すかについて言及するテキスト。
コード:
using System; using System.IO; using System.Linq; using System.Threading.Tasks; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization; namespace StudentData { [Serializable] class CBA { public int student_ID1; public String student_name1; public double CGPA1; public int student_ID2; public String student_name2; public double CGPA2; public int student_ID3; public String student_name3; public double CGPA3; static void Main(string[] annie) { CBA ID = new CBA(); ID.student_ID1 = 15023456; ID.student_name1 = "Rahul Kashyap"; ID.CGPA1 = 9.5; ID.student_ID2 = 18023950; ID.student_name2 = "Ankush Rajput"; ID.CGPA2 = 8.7; ID.student_ID3 = 19084653; ID.student_name3 = "Aadarsh Rajput"; ID.CGPA3 = 7.5; IFormatter eduCBA = new BinaryFormatter(); Stream learn = new FileStream(@"E:\EDUCBA.txt",FileMode.Create,FileAccess.Write, FileShare.None); eduCBA.Serialize(learn, ID); learn.Close(); learn = new FileStream(@"E:\EDUCBA.txt",FileMode.Open,FileAccess.Read, FileShare.Read); learn.Close(); Console.Write("\n"); Console.Write("Welcome! Desired data is below"); Console.Write("\n"); Console.Write("\n"); Console.Write("::TABLE::"); Console.Write("\n"); Console.Write("\n"); Console.Write("::ROW1::"); Console.WriteLine("Student_ID: {0}", ID.student_ID1); Console.Write("::ROW2::"); Console.WriteLine("Student_Name: {0}", ID.student_name1); Console.Write("::ROW3::"); Console.WriteLine("CGPA Scored: {0}", ID.CGPA1); Console.Write("\n"); Console.Write("\n"); Console.Write("::ROW1::"); Console.WriteLine("Student_ID: {0}", ID.student_ID2); Console.Write("::ROW2::"); Console.WriteLine("Student_Name: {0}", ID.student_name2); Console.Write("::ROW3::"); Console.WriteLine("CGPA Scored: {0}", ID.CGPA2); Console.Write("\n"); Console.Write("\n"); Console.Write("::ROW1::"); Console.WriteLine("Student_ID: {0}", ID.student_ID3); Console.Write("::ROW2::"); Console.WriteLine("Student_Name: {0}", ID.student_name3); Console.Write("::ROW3::"); Console.WriteLine("CGPA Scored: {0}", ID.CGPA3); } } }
出力:
以下の例では、オブジェクトのシリアル化のために、最初にストリーム (FileStream) オブジェクト「boo」を作成し、次に BinaryFormatter オブジェクト「coo」のオブジェクトを作成してから、「coo.Serialize(boo, aoo)」は、C# でオブジェクトをシリアル化するための BinaryFormatter.Serialize() メソッドです。
オブジェクトの逆シリアル化の場合も同様に、まずシリアル化された出力の読み取りに使用されるストリーム (FileStream) オブジェクト「boo」を作成し、次に BinaryFormatter オブジェクト「doo」のオブジェクトを作成してから、「ドゥー。 Deserialize(boo)」は、C# でオブジェクトを逆シリアル化するための BinaryFormatter.Deserialize() メソッドです。
コード:
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace EDUCBA { class Rahul { public static void SomeData() { string aoo = "Heyoo! Thank you for visiting us...."; FileStream boo = new FileStream(@"D:\EduCBA.txt", FileMode.Create,FileAccess.Write, FileShare.None); BinaryFormatter coo = new BinaryFormatter(); coo.Serialize(boo, aoo); boo.Close(); } public static void AnotherData() { FileStream boo = new FileStream(@"D:\EduCBA.txt", FileMode.Open,FileAccess.Read, FileShare.Read); BinaryFormatter doo = new BinaryFormatter(); string eoo = ""; eoo = (string)doo.Deserialize(boo); boo.Close(); Console.WriteLine("EduCBA’s-se-ria-li-za-tion-&-de-se-ria-li-za-tion-in-C#-exam-ple"); Console.WriteLine("\n"); Console.WriteLine(eoo); } static void Main(string[] foo) { SomeData(); AnotherData(); Console.ReadLine(); } } }
出力:
上記の説明に基づいて、C# でのオブジェクトのシリアル化と、C# での同じオブジェクトの逆シリアル化について理解しました。シリアル化の重要性も理解しました。 C# シリアル化と C# 逆シリアル化に関連するさまざまな例と、両方の構文について説明しました。
以上がC# オブジェクトのシリアル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。