6

列挙型が属性Enum.GetName()で装飾されている場合、機能しないようです。[Flags]

ドキュメントには、この制限に関連するものは何も指定されていません。

デバッガーがTree |のようなものを表示できることに気付きました。果物。結合されたフラグを説明するテキスト文字列を取得する方法はありますか?


以下のコード表示Red

public enum FavoriteColor
{
    Red,
    Blue,
    WeirdBrownish,
    YouDoNotEvenWantToKnow,
}

var color = FavoriteColor.Red;
Console.WriteLine(Enum.GetName(typeof(FavoriteColor), color));   // => "Red"

これは何も出力しませんが....

[Flags]
public enum ACherryIsA
{
    Tree = 1,
    Fruit = 2,
    SorryWhatWasTheQuestionAgain = 4,
}

var twoOfThree = ACherryIsA.Fruit | ACherryIsA.Tree;
Console.WriteLine(Enum.GetName(typeof(ACherryIsA), twoOfThree));   // => ""
4

3 に答える 3

9
string s = twoOfThree.ToString();

また:

Console.WriteLine(twoOfThree);

手動で行う場合は、値をビットに分割し、そのフラグを作成するために追加する必要があるフラグをテストします。少しコーディングしますが、それほど多くはありません。

于 2012-06-08T12:40:47.403 に答える
4

なぜtwoOfThree.ToString()ですか?

twoOfThree は 3 に等しく、ACherryIsA にはこの値に関連する列挙メンバーがありません...

于 2012-06-08T12:43:35.763 に答える