假设我有这个枚举:
[Flags]
enum Letters
{
A = 1,
B = 2,
C = 4,
AB = A | B,
All = A | B | C,
}
Run Code Online (Sandbox Code Playgroud)
要检查是否AB已设置,我可以这样做:
if((letter & Letters.AB) == Letters.AB)
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来检查组合标志常量的任何标志是否设置为以下?
if((letter & Letters.A) == Letters.A || (letter & Letters.B) == Letters.B)
Run Code Online (Sandbox Code Playgroud)
你可以换&一些东西吗?
对于像这样的二进制文件来说不太稳定......
我有一个小方法,看起来像这样:
public void SetOptions<T>() where T : Enum
{
int i = 0;
foreach (T obj in Enum.GetValues(typeof(T)))
{
if (i == 0)
DefaultOption = new ListItem(obj.Description(), obj.ToString());
i++;
DropDownList.Items.Add(new ListItem(obj.Description(), obj.ToString()));
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我从枚举中填充下拉列表.Description()实际上是枚举的扩展方法,所以T绝对是一个enum.
但是,我想像obj你这样对任何枚举进行(int)obj转换,但是我得到一个错误,说我无法将T转换为int.有没有办法做到这一点?
我有枚举:
[Flags, Serializable,]
public enum WeekDays {
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64,
WeekendDays = Sunday | Saturday,
WorkDays = Monday | Tuesday | Wednesday | Thursday | Friday,
EveryDay = WeekendDays | WorkDays
}
Run Code Online (Sandbox Code Playgroud)
而且,我WeekDays在一个包含WeekDays枚举值的类中有属性:
public int WeekDays {get; set;}
Run Code Online (Sandbox Code Playgroud)
例如,WorkDays包含62(从星期一到星期五).
如何检查当前WeekDays属性是否包含当天?