2009-06-10 21 views
0

フラグの配列を文字列に格納する必要があります。私はBitArrayの使用を検討していましたが、char []やint []や何かに書き込み/読み込みする組み込みのメソッドがないことに気付きました。私はこのコードを簡単に書くことができますが、そこに1つがある場合は組み込みのメソッドを使用することをお勧めします。フラグをシリアル化/逆シリアル化する組み込みクラス

これを処理する組み込みの.NETメソッドがありますか?

+0

お客様の問題に関連するコードスニペットが、質問に対するより良い回答を得るのに役立つ場合があります。 – LBushkin

答えて

2

フラグが定義された列挙型として表されている場合は、列挙型の整数型(int、longなど)のいずれかに単純にキャストできます。その後、使用してその値表現から列挙型をデシリアライズすることができます

// 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

BitConverterクラスは、この機能のいくつかを持っています。

0

BitArrayは、Int32 []をサポートしています。は、初期化にint []を受け入れ、CopyTo(Array array, Int32 index)を受け入れるconstructorを使用できます。現在のCopyTo実装は、msdnに従ってBoolean []、Byte []およびInt32 []への書き込みをサポートしています。

関連する問題