将方法参数转换为枚举
这个问题在这里已经有了答案:
只需检查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中的任何值,就不会给你一个枚举值
是的,你可以从int
到enum
进行直接投射(假设该整数的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