相关疑难解决方法(0)

如何检查是否设置了标志组合的标志?

假设我有这个枚举:

[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)

你可以换&一些东西吗?

对于像这样的二进制文件来说不太稳定......

c# enums flags

165
推荐指数
11
解决办法
14万
查看次数

如何将泛型枚举转换为int?

我有一个小方法,看起来像这样:

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.有没有办法做到这一点?

c# enums

44
推荐指数
6
解决办法
2万
查看次数

带有flags属性的枚举

我有枚举:

    [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属性是否包含当天?

.net c#

4
推荐指数
2
解决办法
1093
查看次数

标签 统计

c# ×3

enums ×2

.net ×1

flags ×1