如果枚举已使用 [Flags]
属性修饰,则 Enum.GetName()
似乎不起作用。
documentation 未指定与此限制相关的任何内容。
我注意到调试器能够显示类似Tree |水果。有没有办法检索描述组合标志的文本字符串?
以下代码显示红色
。
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)); // => ""
最佳答案
string s = twoOfThree.ToString();
或:
Console.WriteLine(twoOfThree);
如果您想手动执行此操作,请将值拆分为位,然后测试需要添加哪些标志来制作该标志。一些编码,但不多。
关于c# - 位字段的 Enum.GetName()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10948997/