[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 공식 문서를 참고하시기 바랍니다.