[c#] C# 직렬화 속성

C#에서 직렬화(Serialization)는 객체를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크를 통해 전송하는 프로세스를 말합니다. 이를 통해 데이터를 저장하고 전송하고 다시 복구하는 작업이 가능해집니다. C#에서는 Serializable 속성과 NonSerialized 속성을 사용하여 직렬화를 제어할 수 있습니다.

Serializable 속성

Serializable 속성은 클래스나 구조체를 직렬화할 수 있도록 지정하는 데 사용됩니다. 클래스나 구조체에 이 속성을 적용하면 해당 객체들은 직렬화되어 파일에 저장하거나 네트워크를 통해 전송할 수 있게 됩니다.

[Serializable]
public class MySerializableClass
{
    // 직렬화될 멤버 변수들
}

NonSerialized 속성

NonSerialized 속성은 클래스의 특정 멤버 변수가 직렬화되지 않도록 지정하는 데 사용됩니다. 예를 들어, 암호나 임시 데이터 등을 보호하기 위해 직렬화를 제외하고 싶은 경우에 사용할 수 있습니다.

[Serializable]
public class MyClass
{
    public int ID;
    public string Name;
    [NonSerialized]
    public string Password;
}

C#에서는 직렬화된 데이터를 생성하고 읽어 들이는 다양한 메서드와 클래스를 제공합니다. BinaryFormatter, XmlSerializer, DataContractSerializer 등의 클래스를 사용하여 직렬화된 데이터를 다룰 수 있습니다.

직렬화된 데이터를 안전하게 저장하거나 전송할 때 빈번하게 사용되는 기술이므로, C#에서의 직렬화 속성을 제대로 활용하는 것은 중요합니다.

이 외에도 C#에서의 직렬화에 대한 자세한 내용은 MSDN의 Serialization 문서를 참고할 수 있습니다.