[c#] C# 직렬화를 이용한 상태 보존

C#에서 직렬화(serialization)는 객체의 상태를 저장하고 나중에 불러와서 상태를 복원하는 과정을 말합니다. 이를 이용하면 프로그램이 종료되거나 데이터를 전송하는 경우에도 객체의 상태를 보존할 수 있습니다. 이 글에서는 C#에서 직렬화를 이용하여 객체의 상태를 보존하는 방법에 대해 알아보겠습니다.

직렬화(Serialization)란?

직렬화는 객체의 인스턴스를 데이터 스트림으로 변환하는 과정을 말합니다. 이 데이터 스트림은 나중에 해당 객체를 재구성하는 데 사용될 수 있습니다. C#에서는 System.Runtime.Serialization 네임스페이스에 있는 클래스와 인터페이스를 사용하여 직렬화를 처리합니다.

C#에서 직렬화 사용하기

C#에서는 직렬화를 위해 Serializable 속성을 사용합니다. 이 속성을 클래스에 적용하면 해당 클래스의 객체는 직렬화될 수 있습니다. 아래는 간단한 예제 코드입니다.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class Person
{
    public string Name;
    public int Age;
}

public class Program
{
    public static void Main()
    {
        Person person = new Person { Name = "John", Age = 30 };

        // 객체를 직렬화하여 파일에 저장
        IFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("person.bin", FileMode.Create, FileAccess.Write, FileShare.None);
        formatter.Serialize(stream, person);
        stream.Close();

        // 파일에서 읽어와서 객체로 복원
        stream = new FileStream("person.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
        Person restoredPerson = (Person)formatter.Deserialize(stream);
        stream.Close();

        Console.WriteLine(restoredPerson.Name); // 출력: John
        Console.WriteLine(restoredPerson.Age);  // 출력: 30
    }
}

위 예제를 실행하면 Person 객체를 직렬화하여 person.bin 파일에 저장한 후, 다시 파일에서 읽어와서 객체를 복원합니다. 복원된 객체의 상태는 직렬화하기 전의 상태와 동일합니다.

결론

C#의 직렬화를 이용하면 객체의 상태를 파일에 저장하거나 네트워크를 통해 전송할 수 있습니다. 이를 통해 객체의 상태를 보존하고 다시 복원할 수 있어서, 데이터의 지속성과 이동성을 보장할 수 있습니다.

직렬화에 대한 더 자세한 내용은 Microsoft 공식 문서를 참고하시기 바랍니다.