[c#] C#에서의 데이터 직렬화 및 역직렬화 예제
C#에서 데이터 객체를 직렬화하고 역직렬화하는 것은 매우 중요합니다. 데이터 직렬화는 객체를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크를 통해 전송할 수 있게 해줍니다. 이 기능을 이용해 데이터를 보다 효율적으로 저장하고 전송할 수 있습니다.
데이터 직렬화
C#에서 객체를 직렬화하려면 System.Runtime.Serialization
네임스페이스를 사용해야 합니다. 다음은 데이터를 직렬화하는 간단한 예제입니다.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Person
{
public string Name;
public int Age;
}
class Program
{
static void Main()
{
Person person = new Person { Name = "Alice", Age = 30 };
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("person.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, person);
stream.Close();
}
}
위 예제에서 Person
클래스는 Serializable
속성을 사용하여 직렬화 가능하다고 표시했습니다. BinaryFormatter
클래스를 사용하여 객체를 직렬화하고, FileStream
을 이용하여 직렬화된 데이터를 파일에 저장합니다.
데이터 역직렬화
이제 이 파일에서 데이터를 읽고 역직렬화하는 방법을 살펴보겠습니다.
class Program
{
static void Main()
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("person.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
Person person = (Person)formatter.Deserialize(stream);
stream.Close();
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
위 예제에서는 BinaryFormatter
를 사용하여 파일에서 직렬화된 데이터를 읽어들이고, Deserialize
메서드를 이용하여 역직렬화합니다.
이제 직렬화와 역직렬화에 대한 간단한 예제를 살펴보았습니다. 직렬화를 통해 데이터를 파일에 저장하거나 네트워크를 통해 전송할 수 있고, 역직렬화를 통해 다시 객체로 복원할 수 있습니다.
많은 데이터베이스나 파일 입출력 라이브러리에서는 직렬화를 지원하므로, 이러한 기능을 적절히 활용하여 데이터를 효율적으로 다룰 수 있습니다.