2009-06-10 3 views
0

문자열에 플래그 배열을 저장해야합니다. BitArray를 사용하여 보았지만 char [] 또는 int [] 또는 뭔가를 쓰거나 읽는 기본 제공 메서드가 없다는 것을 알았습니다. 나는이 코드를 쉽게 작성할 수 있지만 거기에 하나가 있다면 내장 메소드를 사용하는 것을 선호한다.플래그 세트를 직렬화/비 직렬화하는 빌트인 클래스

이렇게 처리하는 기본 제공 .NET 메서드가 있습니까?

+0

문제와 관련된 코드 스 니펫이 질문에 대한 더 나은 답변을 얻는 데 도움이 될 수 있습니다. – LBushkin

답변

2

깃발이 정의 된 열거 형으로 표시되는 경우 지원을 열거하는 정수 유형 (int, long 등) 중 하나에 간단하게 캐스팅 할 수 있습니다. 다음을 사용하여 값 표현식에서 enum을 deserialize 할 수 있습니다.

// define a Flags enumeration... 
[Flags] enum MyEnum { First = 1, Second = 2, Third = 4, }; 


MyEnum originalValue = MyEnum.First | MyEnum.Second; 
int storedValue = (int)originalValue; 

// value serialized into storage somewhere... 

// later on ... 
// deserialized however you need... 
int restoredValue = ReadValueFromDataStore(); 
// convert back into a typesafe enum... 
MyEnum recoveredValue = Enum.Parse(typeof(MyEnum), restoredValue); 
+0

실제로, originalValue.ToString() 및 Enum.Parse를 사용하여 값을 직렬화 및 비 직렬화 할 수 있습니다. 중간 int는 필요하지 않습니다. 중간 int가 필요한 이유가 있습니까? – dmo

0

BitArray은 Int32 []를 지원하지만 초기화를 위해 int [] 및 CopyTo(Array array, Int32 index)을 사용할 수있는 constructor을 사용할 수 있습니다. 현재의 CopyTo 구현은 msdn에 따라 Boolean [], Byte [] 및 Int32 []에 대한 쓰기를 지원합니다.

관련 문제