我有一個像定義枚舉:如何將枚舉值轉換爲壓縮的字符串?
[Flags]
public enum MyEnum
{
None = 0,
ValueOne = 1 << 0,
ValueTwo = 1 << 1,
ValueThree = 1 << 2,
ValueFour = 1 << 3,
...
ValueTwoEightyOne = 1 << 280,
}
我想能夠使用轉換,以最短的字符串可能類似於:
var compressedString = ConvertToCompressedString(MyEnum.ValueOne | MyEnum.ValueThree | MyEnum.ValueFour);
然後在不同的部分該程序,我想給compressedString轉換回枚舉
var enumValue = ConvertBack(compressedString);
什麼是一個枚舉轉換有這麼多價值的有效方法?如果有更好的方式來處理這種類型的用例,我很感興趣。
'ValueTwoEightyOne = 1 << 280'?你確定你對這個以及其他所有溢出在「<< 32」之上都可以嗎? – Oded 2012-02-13 14:50:28
是的,這是一個相當龐大的數字。即使使用'enum MyEnum:long',期待意想不到的過去64 – spender 2012-02-13 14:53:48
當你說「壓縮字符串」時,你的字面意思是什麼System.String?或者你只是指組合的標誌值(作爲MyEnum與相應的位設置)?您已有的組合標誌值,您不需要轉換方法,只需將它們組合在一起即可。枚舉只是一個正常的整數與口紅上(這就是爲什麼不能有1 << 280,因爲它會溢出)。 – 2012-02-13 14:54:31