我需要存儲標誌的一個陣列中的字符串。我看着使用BitArray,但注意到,有寫入沒有內置的方法/從一個char讀[]或INT []什麼的。我可以很容易地編寫這段代碼,但如果有一個代碼,我更喜歡使用內置方法。內置類序列化/反序列化一組標誌
那麼,有沒有內置的處理這種.NET方法?
我需要存儲標誌的一個陣列中的字符串。我看着使用BitArray,但注意到,有寫入沒有內置的方法/從一個char讀[]或INT []什麼的。我可以很容易地編寫這段代碼,但如果有一個代碼,我更喜歡使用內置方法。內置類序列化/反序列化一組標誌
那麼,有沒有內置的處理這種.NET方法?
如果你的標誌被表示爲定義枚舉,你可以簡單地將它轉換爲整數類型的一個枚舉支持(的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);
實際上,有可能使用originalValue.ToString()和Enum.Parse序列化和反序列化值 - 是不需要的中間int值。是否有中間int需要的原因? – dmo 2009-06-11 16:39:30
的BitConverter類有一些這方面的功能。
BitArray不支持Int32 [],您可以使用接受int []進行初始化的constructor,以及CopyTo(Array array, Int32 index)。目前的CopyTo實現支持根據msdn寫入布爾[],Byte []和Int32 []。
關於你的問題可能有助於獲得更好的回答你的問題的代碼片段。 – LBushkin 2009-06-10 19:34:20