[英]c# enum flag check if string is in flag
我有一個枚舉:
[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
我想你想要這個
WeekDays days = WeekDays.Monday | WeekDays.Tuesday;
string monday = "Monday";
WeekDays day;
if (Enum.TryParse(monday, true, out day))
{
if (days.HasFlag(day))
{
Console.WriteLine("Has {0}", monday);
}
else
{
Console.WriteLine("Does not have {0}", monday);
}
}
else
{
Console.WriteLine("invalid string");
}
首先,您可以使用Enum.TryParse
將字符串解析為枚舉值或確定字符串是否無效。 然后使用HasFlag
來查看它是否包含在內。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.