私は以下のように定義される列挙型があります:私はと同様に、可能な限り短い文字列に使用を変換できるようにしたいと思い列挙型の値を圧縮された文字列に変換する方法は?
[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'?あなたはこれでOKで、他のすべてのオーバーフローは '<< 32'ですか? – Oded
ええ、それはかなりひどい数字です。 「enum MyEnum:long'」を使用しても、予期しない過去64日を期待してください。 – spender
「圧縮された文字列」と言うと、文字通りSystem.Stringを意味しますか?または、結合されたフラグ値(それぞれのビットが設定されたMyEnum)を意味するだけですか?あなたがすでに持っているフラグ値を組み合わせれば、変換方法は必要ありません。列挙型は、通常の整数であり、その上に口紅が付いています(オーバーフローするので、1 << 280を持つことはできません)。 –