c# 枚举标志检查字符串是否在标志中

标签 c# enums

我有一个枚举:

[Flags]
public enum WeekDays
{

    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    Saturday = 32,
    Sunday = 64
}

如果我这样做:

var weekDays = WeekDays.Monday | WeekDays.Tuesday | WeekDays.Friday;

如何检查是否在 weekDays 中设置了字符串,例如 Monday

最佳答案

检查以下代码。您可以使用 HasFlag属性:

class Program
    {
        [Flags]
        public enum WeekDays
        {

            Monday = 1,
            Tuesday = 2,
            Wednesday = 4,
            Thursday = 8,
            Friday = 16,
            Saturday = 32,
            Sunday = 64
        }

        private static string result;

        static void Main()
        {
            var wd = new WeekDays();
            Console.WriteLine(wd.HasFlag(WeekDays.Monday));

            wd = WeekDays.Monday;

            Console.WriteLine(wd.HasFlag(WeekDays.Monday));

            bool is_defined = Enum.IsDefined(typeof(WeekDays), "Monday");

            Console.WriteLine(is_defined);

            bool is_not_defined = Enum.IsDefined(typeof(WeekDays), "Mondays");

            Console.WriteLine(is_not_defined);

            bool has_flag_by_string = Enum.TryParse<WeekDays>("Monday", out wd);

            Console.WriteLine(has_flag_by_string);

            Console.ReadLine();
        }
    }

编辑

添加了通过字符串检查属性是否存在的功能。

编辑 2

添加了 Enum.TryParse<>解析字符串值。

引用:

https://msdn.microsoft.com/en-us/library/system.enum.hasflag(v=vs.110).aspx

关于c# 枚举标志检查字符串是否在标志中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259107/

相关文章:

c# - Unity 中的闪光效果

c# - 有没有办法对 BigInteger 进行舍入或取整?

c# - 如何删除 GMap 中心位置上显示的加号 (+)?

ios - Swift 中的嵌套间接枚举

c# - 是否可以创建分层枚举?

c# - string.Split 即使有效也会产生错误

c# - 从图像中读取字符

c - MISRA 违反规则 10.1 和枚举

yii - 如何进行字段枚举迁移 yii2

css - 根据 View 的枚举属性显示的内容更改表行颜色。 ASP.Net MVC