我有一个类似的枚举类,
public enum USERTYPE
{
Permanant=1,
Temporary=2,
}
在我的业务对象中,我只是将此枚举声明为
private List<USERTYPE> userType=new List<USERTYPE>;
在get / set方法中,我尝试了
public List<USERTYPE> UserType
{
get
{
return userType;
}
set
{
userType= value;
}
}
这里它将行的no返回为0,如何在这里获取Enum中的所有值,任何人都可以帮助我...
答案 0 :(得分:17)
您可以使用它来获取所有单独的枚举值:
private List<USERTYPE> userTypes = Enum.GetValues(typeof(USERTYPE)).Cast<USERTYPE>().ToList();
如果你经常这样做,你可以为它创建一个通用的实用方法:
public static T[] GetEnumValues<T>() where T : struct {
if (!typeof(T).IsEnum) {
throw new ArgumentException("GetValues<T> can only be called for types derived from System.Enum", "T");
}
return (T[])Enum.GetValues(typeof(T));
}
答案 1 :(得分:5)
GetValues
会返回System.Array
,但我们知道它真的是TEnum[]
(这是一个从零开始索引的一维数组),其中TEnum
是USERTYPE
在你的情况下。因此使用:
var allUsertypeValues = (USERTYPE[])Enum.GetValues(typeof(USERTYPE));
答案 2 :(得分:2)
你所拥有的基本上是枚举列表。不是枚举中的单个项目。
获取可以执行的枚举值列表
string[] str = Enum.GetNames(typeof(USERTYPE));
在get / set返回字符串[]而不是List&lt;&gt;中使用
public string[] UserType
{
get
{
return Enum.GetNames(typeof(USERTYPE));
}
}
我认为set在这里不起作用,因为你不能在运行时在枚举中添加值。
答案 3 :(得分:2)
如果您想从列表user.UserType
中获取特定的枚举值,则首先需要Add
枚举此列表的值:
var user = new User();
//1 value - PERMANENT
user.UserType.Add(USERTYPE.Permanent);
但是,如果您只需要从任意enum
获取所有可能的值,那么您可以尝试Enum.GetValues
//2 values - Permanant and Temporary
var enums = Enum.GetValues(typeof(USERTYPE));
答案 4 :(得分:2)
UserType你可以尝试一下,
UserType = Enum.GetValues(typeof(USERTYPE)).OfType<USERTYPE>().ToList();