将方法参数转换为枚举
本文关键字:枚举 转换 参数 方法 | 更新日期: 2023-09-27 18:28:42
我定义了一个枚举类型,如下所示:
public enum Status
{
Active=1,
InActive=0
}
在我的方法中,我可以将参数强制转换为枚举,如下所示:
public string doSomething(string param1, int status)
{
//will this work?
Account.Status = (Status) status;
//or do i need to test one by one like this
if(status == 0)
{
Account.Status = Status.Inactive;
//and so on...
} // end if
} // end doSomething
是的,您可以执行从int
到enum
的直接转换(假设存在该整数的enum
表示)。
如果在解析之前需要检查enum
是否存在,请使用Enum.IsDefined,即
if (Enum.IsDefined(typeof(Status), status))
{
Account.Status = (Status)status;
}
只需检查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。
如果你试图转换一个不存在的枚举值,它会起作用,但如果你试图将其与枚举中的任何值进行比较,它不会给你一个枚举值