将方法参数转换为枚举

这个问题在这里已经有了答案:

  • 在int C中枚举21枚答案

  • 只需检查int是否为Status的有效值,然后执行转换。

    public string doSomething(string param1, int status)
    {
        if (IsValidEnum<Status>(status))
        {
            Account.Status = (Status)status;
        }
        ...
    }
    
    private bool IsValidEnum<T>(int value)
    {
        var validValues = Enum.GetValues(typeof(T));
        var validIntValues = validValues.Cast<int>();
        return validIntValues.Any(v => v == value);
    }
    

    如果你愿意,你可以抛出异常。


    当然你可以做到这一点。 试试看。

    你也可以用其他方式施放

    (int)Account.Status
    

    有可能将Enum转换为int,反之亦然,因为每个Enum实际上都由默认的int表示。 您应该手动指定成员值。 默认情况下,它从0开始到N.

    如果你试图转换一个不存在的枚举值,它会起作用,但如果你试图比较它在enum中的任何值,就不会给你一个枚举值


    是的,你可以从intenum进行直接投射(假设该整数的enum表示存在)。

    如果您需要在解析之前检查enum是否存在,请使用Enum.IsDefined即

    if (Enum.IsDefined(typeof(Status), status))
    {
        Account.Status = (Status)status;
    }
    
    链接地址: http://www.djcxy.com/p/22525.html

    上一篇: Converting a method argument into an enum

    下一篇: How can I get an enum name from the name of the enum type and an int