
把枚举转换成int型就可以了 。
枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。
枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1, …,sat值为6。
如
String str = sun;
int week;
if(strequals(枚举值)){
week = 0;
}
在C语言中,枚举类型是被当做int或者unsigned int类型来处理的,所以按照C语言规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,可以实现有条件的遍历。
1 枚举类型必须连续。
由于枚举类型支持如下方式定义:
enum
{
ENUM_0,
ENUM_10 = 10,
ENUM_11
};
这样就会导致枚举类型不连续,这种枚举无法遍历。
2 枚举类型中人为加入起始及结束标记。
enum
{
ENUM_START,
ENUM_0,
ENUM_1,
ENUM_2,
ENUM_END
};
可以看到,在这个枚举类型中,人为加入可ENUM_START, 和ENUM_END。中间的ENUM_0,ENUM_1,ENUM_2才是实际的有效数据。当后续需要增删枚举元素时,也要保证ENUM_START, 和ENUM_END分别为最小和最大值。
满足以上两种条件下,就可以做枚举的遍历了,参考代码如下:
int i;
for(i = ENUM_START+1; i<ENUM_END; i ++)
{
//使用枚举元素。
}
这个循环中,i的值就是所有有效的枚举元素值。
一、使用工具:NSDictionary,电脑一台
二、方法步骤:
1、定义几种类型
2、写到字典的枚举
三、注意事项:
1、不能将值类型保存到 NSDictionary (枚举是一个值类型)。要换到 NSNumber,但请记住,在此枚举上叫 toRaw,试试这个:
2、扩展,这是如何一步一步进行访问:
如果数值是尽可能连续的可以用一个数组存放对应的字符串
类似 char xxx[] = {"zero", "one", "two", "three",};
如果不是写一个函数类似
char f(int x)
{
switch (x)
{
case 1: return "one";
case 5: return "five";
case 10: return "ten";
}
return "unknown";
}
枚举遍历
public enum EMyType
{
[SystemComponentModelDescription("A类型")]
TypeA = 1,
[SystemComponentModelDescription("B类型")]
TypeB = 1,
[SystemComponentModelDescription("C类型")]
TypeC = 2,
}
接着遍历其枚举名的方法是
foreach (var name in EnumGetNames(typeof(EMyType)))
{
ConsoleWriteLine(name);
}
接着遍历其枚举名与枚举值的方法是
foreach (var value in EnumGetValues(typeof(EMyType)))
{
ConsoleWriteLine(stringFormat("{0}={1}", valueToString(), ConvertToInt32(value)));
}
接着遍历其枚举名,枚举值与描述属性的字符串的方法是
foreach (var value in EnumGetValues(typeof(EMyType)))
{
object[] objAttrs = valueGetType()GetField(valueToString())GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objAttrs != null &&
objAttrsLength > 0)
{
DescriptionAttribute descAttr = objAttrs[0] as DescriptionAttribute;
ConsoleWriteLine(stringFormat("[{0}]", descAttrDescription));
}
ConsoleWriteLine(stringFormat("{0}={1}", valueToString(), ConvertToInt32(value)));
}
枚举反射,根据枚举中的val或者data读取值和描述
举例实用:
1 Type t = AssemblyLoad("XXXSDK")GetType("XXXSDKEntities" + ObjType);
2 var dataList = new List<object>();
3 foreach (var value in EnumGetValues(t))
4 {
5
6 object[] objAttrs = valueGetType()GetField(valueToString())GetCustomAttributes(typeof(DescriptionAttribute), true);
7 DescriptionAttribute descAttr = objAttrs[0] as DescriptionAttribute;
8 var date = new
9 {
10 Description = descAttrDescription,
11 Name = valueToString(),
12 value = ConvertToInt32(value)
13 };
14 dataListAdd(date);
15 }
根据枚举的名字,读出枚举的描述,内容和值。
UserCardStatus userCardStatu = (UserCardStatus)EnumParse(typeof(UserCardStatus), resultuser_card_status, true);
string txt = GetEnumDescription(userCardStatu);
public string GetEnumDescription(Enum enumValue)
{
string str = enumValueToString();
FieldInfo field = enumValueGetType()GetField(str);
object[] objs = fieldGetCustomAttributes(typeof(DescriptionAttribute), false);
if (objs == null || objsLength == 0) return str;
DescriptionAttribute da = (DescriptionAttribute)objs[0];
return daDescription;
}
根据枚举的单个内容,读出描述
没有什么好办法,只有用switch。将输入的值储存到一个string变量中,然后swtich+case一长串
用enum没有意义的,因为enum在c++里经过编译后实际上就是多个const整型,你的定义其实差不多相当于
const int ROCK=0;
const int SCISSOR=1;
const int CLOTH=2;
……
当然还是有一定差距的,就是在于你可以定义一个变量,内容限定为enum中的这些整型的值。然后,就我所知,没有其他的差别了
所以完全没办法把他们关联到字符串上。
在SQL中,枚举值是指一组有限的值,它们可以用来查询数据库中的特定数据。例如,如果您想要查询某个国家的所有城市,您可以使用枚举值来查询该国家的所有城市。您可以使用SELECT语句来查询枚举值,该语句的语法如下:SELECT FROM table_name WHERE column_name IN (value1, value2, value3, );其中,table_name是您要查询的表名,column_name是您要查询的列名,value1、value2、value3等是您要查询的枚举值。例如,如果您想要查询某个国家的所有城市,您可以使用以下SELECT语句:SELECT FROM cities WHERE country IN ('China', 'India', 'USA');这样,您就可以查询到指定国家的所有城市。
以上就是关于java中的枚举如何根据数字得到文本值全部的内容,包括:java中的枚举如何根据数字得到文本值、C语言怎样取得枚举型的名字 而不是值、NSDictionary,如何存储和读取的枚举值吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)