如何从int输入获取枚举值?
假设我在下面有这个枚举。

[Flags]
public enum Weeks
{
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64
}

public List<Weeks> GetEnumValues(int input)
{
    // Don't know what is the logic here
    // Help is much appreciated
}


然后输出如下

Examples:
1.) input = 3; This means Sunday and Monday hence 1 + 2 = 3; This should return List<Weeks> { Sunday, Monday }
2.) input = 20; This means Tuesday and Thursday hence 4 + 16 = 20; This should return List<Weeks> { Tuesday, Thursday }
3.) input = 40; This means Wednesday and Friday hence 8 + 32 = 40; This should return List<Weeks> { Wednesday, Friday }


先感谢您。

最佳答案

您可以通过循环每个枚举“标志”并检查每个“标志”是否在输入值中设置了该位。这是执行此操作的一种方法:

public List<Weeks> GetEnumValues(int input)
{
    Weeks inputEnum = (Weeks)input;
    var list = new List<Weeks>();

    foreach(var enumFlag in Enum.GetValues(typeof(Weeks)).Cast<Weeks>())
    {
        if (inputEnum.HasFlag(enumFlag))
        {
            list.Add(enumFlag);
        }
    }

    return list;
}

关于c# - 从int获取枚举值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39584585/

10-10 02:20