[c#] 직렬화 사용 예시

C#에서 직렬화는 객체를 데이터 스트림으로 변환하는 프로세스를 의미합니다. 직렬화를 사용하면 객체를 파일에 저장하거나 네트워크를 통해 전송할 수 있습니다.

직렬화를 위해서는 System.Runtime.Serialization 네임스페이스를 사용해야 합니다.

객체 직렬화

객체를 직렬화하기 위해서는 해당 클래스에 [Serializable] 속성을 추가해야 합니다.

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

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

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

        // 직렬화
        BinaryFormatter formatter = new BinaryFormatter();
        using (Stream stream = new FileStream("person.dat", FileMode.Create, FileAccess.Write, FileShare.None))
        {
            formatter.Serialize(stream, person);
        }
    }
}

위의 예시에서 Person 클래스는 [Serializable] 속성을 갖고 있으며, BinaryFormatter를 사용하여 객체를 파일에 직렬화하고 있습니다.

객체 역직렬화

직렬화된 데이터를 사용하여 객체를 역직렬화하기 위해서는 단순히 파일에서 데이터를 읽고 BinaryFormatter를 사용하여 역직렬화하면 됩니다.

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

class Program
{
    static void Main()
    {
        // 역직렬화
        BinaryFormatter formatter = new BinaryFormatter();
        using (Stream stream = new FileStream("person.dat", FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            Person person = (Person)formatter.Deserialize(stream);
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}

위의 예시에서는 person.dat 파일로부터 데이터를 읽고 BinaryFormatter를 사용하여 객체를 역직렬화하고 있습니다.

이러한 방식으로 C#에서 직렬화와 역직렬화를 수행할 수 있습니다.

결론

C#에서 직렬화를 사용하여 객체를 파일에 저장하거나 네트워크를 통해 전송하는 방법에 대해 알아보았습니다. 직렬화역직렬화는 데이터를 다른 형태로 변환하고 다시 변환하는데 유용한 기술입니다.