산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

예제를 사용하여 C#의 직렬화 및 역직렬화

C#의 직렬화 및 역직렬화

직렬화 및 역직렬화의 개념은 개체와 관련된 데이터를 한 응용 프로그램에서 다른 응용 프로그램으로 보내야 할 때마다 사용됩니다. 직렬화는 응용 프로그램 데이터를 파일로 내보내는 데 사용됩니다. 그런 다음 대상 응용 프로그램은 역직렬화를 사용하여 추가 사용을 위해 응용 프로그램에서 데이터를 추출합니다.

직렬화는 C# 클래스 개체가 파일에 작성되거나 직렬화되는 개념입니다. Tutorial이라는 C# 클래스가 있다고 가정해 보겠습니다. 그리고 클래스에는 ID와 Tutorials 이름의 2가지 속성이 있습니다.

직렬화를 사용하여 Tutorial 클래스의 데이터 속성을 파일에 직접 쓸 수 있습니다. 역직렬화는 파일에서 데이터를 읽고 Tutorial 개체를 다시 구성하는 데 사용됩니다.

C#에서 개체를 직렬화하는 방법

이를 달성할 수 있는 방법의 예를 살펴보겠습니다.

이 예에서는 코드에서 아래의 상위 수준 단계를 수행할 것입니다.

  1. ID와 Name이라는 2개의 속성이 있는 Tutorial이라는 클래스를 만듭니다.
  2. 그런 다음 클래스에서 개체를 만들고 ID 속성에 값 "1"을 할당하고 이름 속성에 값 ".Net"을 할당합니다.
  3. 그런 다음 직렬화를 사용하여 위의 개체를 Example.txt라는 파일로 직렬화합니다.
  4. 마지막으로 역직렬화를 사용하여 파일에서 개체를 역직렬화하고 콘솔에 값을 표시합니다.

콘솔 애플리케이션의 program.cs 파일에 아래 코드를 입력합니다.

1단계) 클래스를 추가합니다.
첫 번째 단계는 직렬화에 사용할 클래스를 추가하는 것입니다.

코드 설명:-

  1. 직렬화해야 하는 클래스에는 [Serializable] 속성이 있어야 합니다. 이것은 C#의 키워드입니다. 이 키워드는 Tutorial 클래스에 연결됩니다. 이 속성을 언급하지 않으면 클래스를 직렬화하려고 할 때 오류가 발생합니다.
  2. 다음은 직렬화될 클래스의 정의입니다. 여기에서 "Tutorial"이라는 클래스를 정의하고 2개의 속성을 제공합니다. 하나는 "ID"이고 다른 하나는 "이름"입니다.

2단계) 객체를 생성합니다.
이 단계에서는 먼저 Tutorial 클래스의 객체를 생성하고 이를 Example.txt라는 파일로 직렬화합니다.

코드 설명:-

  1. 먼저 Tutorial 클래스의 객체를 생성합니다. 그런 다음 ID에 "1" 값을 할당하고 name 속성에 ".net" 값을 할당합니다.
  2. 그런 다음 객체를 직렬화하거나 바이너리 형식으로 변환하는 데 사용되는 포맷터 클래스를 사용합니다. 직렬화에서 파일의 데이터는 바이너리 형식으로 수행됩니다. 다음으로 파일 스트림 객체를 생성합니다. 파일 스트림 개체는 쓰기 목적으로 파일 Example.txt를 여는 데 사용됩니다. FileMode.Create 및 FileMode.Write 키워드는 특히 쓰기 목적으로 파일을 열어야 함을 언급하는 데 사용됩니다.
  3. 마지막으로 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();
  }
 }
}

코드 설명:-

  1. 예제.txt 파일을 읽기 전용 모드로 열기 위해 "stream" 개체를 생성합니다.
  2. 예제.txt 파일에 저장된 개체를 역직렬화하는 데 사용되는 포맷터 클래스를 사용합니다. 반환된 개체는 개체 objnew로 설정됩니다.
  3. 마지막으로 "ID" 및 "name" 속성을 사용하여 "objnew" 개체의 속성을 콘솔에 표시합니다.

위의 코드를 설정하고 Visual Studio를 이용하여 프로젝트를 실행하면 아래와 같은 결과가 나옵니다.

출력:-

위의 출력에서 ​​파일의 값이 제대로 역직렬화되어 콘솔에 표시되었음을 알 수 있습니다.

요약

직렬화는 클래스 개체를 파일에 쓰는 데 사용됩니다.

역직렬화는 파일에서 개체를 복구하는 데 사용됩니다.


C 언어

  1. C# 클래스 및 개체
  2. C# 추상 클래스 및 메서드
  3. C# 부분 클래스 및 부분 메서드
  4. C# 봉인된 클래스 및 메서드
  5. 자바 파일 클래스
  6. 예제가 있는 C++의 연산자:정의, 유형 및 프로그램
  7. 구조체와 클래스의 차이점:C++ 예제로 설명
  8. C# 추상 클래스 자습서 예제:추상화란?
  9. Java BufferedReader:예제를 사용하여 Java에서 파일을 읽는 방법
  10. 예제가 있는 Python의 type() 및 isinstance()