日期:2014-05-20  浏览次数:20802 次

关于枚举类型的两个问题
public   enum   a       //字段名
        {
                ID,
                CODE,
                NAME
        }

问题1:
我可以通过   ((a)1).ToString(),得到字符串 "CODE ",
如果想反过来由 "CODE "得到数字1或者a类型的CODE,应该如何写呢?
目前想到可以通过循环,
for(i=0;i <3;i++)   if(((a)i).ToString()== "CODE ")   return   (a)i;
但感觉太麻烦了

问题2:如何得到枚举类型中的元素个数?比如上面的循环中,i <3中的3如果要动态的取得,应该怎么写?

------解决方案--------------------
using System;

public class GetValuesTest {
enum Colors { Red, Green, Blue, Yellow };
enum Styles { Plaid = 0, Striped = 23, Tartan = 65, Corduroy = 78 };

public static void Main() {

Console.WriteLine( "The values of the Colors Enum are: ");
foreach(int i in Enum.GetValues(typeof(Colors)))
Console.WriteLine(i);

Console.WriteLine();

Console.WriteLine( "The values of the Styles Enum are: ");
foreach(int i in Enum.GetValues(typeof(Styles)))
Console.WriteLine(i);
}
}
------解决方案--------------------
Enum.Parse( typeof(a), "CODE ");

------解决方案--------------------
数字好说
Console.WriteLine((a)0);
Console.WriteLine((a)1);
Console.WriteLine((a)2);
字符的我再看看。
顺便说一句,枚举命名要大写。
------解决方案--------------------
EnumConverter.ConvertFromString 方法 (String) 将指定文本转换为对象。
------解决方案--------------------
Text = Enum.GetNames(typeof(a)).Length.ToString();