c# - 位字段的 Enum.GetName()?

标签 c# parsing enums bit-fields

如果枚举已使用 [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/

相关文章:

c# - 如何在新的EXCEL表中写入数据

javascript - JQuery 无法解析 json_encode 创建的 JSON 字符串

javascript - 为什么 TypeScript 转译器将枚举编译成字典查找而不是简单的对象?

javascript - 使用 java 和 javascript 将数据从 Excel 导入数据库。更快的方法是什么?

enums - 如何在 structopt 中使用枚举?

java - 在 GWT-RPC 中使用嵌套枚举

c# - 正则表达式修改

c# - 将 char[,] 数组转换为 char**

c# - 测试 WCF 服务的策略

C:通过mmap读取时解析文件以获得列数