在我们定义枚举类型数据时可能会给字段赋值时并不是连续的,有时用户输入时很随机。我们就可以做一下限制,让它的值显示的是用户输入的对应字段的值。下面是个例子:
我们定义枚举类型Sex
enum Sex
{
男,
女,
}
在使用时
 Console.WriteLine("请输入性别(按编号输入):");
            foreach (var v in Enum.GetNames(typeof(Sex)))
            {
                Console.Write((int)Enum.Parse(typeof(Sex), v) + "、" + v + "    ");
            }
在读入之前先遍历Sex中的GetNames也就是得到它的名字,然后再遍历它的值,用markenum 做个标记。
如果为ture则为输入的值,如果为false就让它转化为Sex类型。
 string sex = Console.ReadLine();
 bool markenum = false;
            foreach (int i in Enum.GetValues(typeof(Sex)))
            {
                if (i == int.Parse(sex))//如果输入的值和枚举里面的值相等则标记markenum =
true
                {
                    markenum = true;
                }
            }
            if (markenum)
            {
                stu.SEX = (Sex)int.Parse(sex);//stu为定义的student结构中new出的对象
            }
            else
            {
                throw new StuException("你输入的编号与性别提供的编号不匹配", int.Parse
(sex));
            }
这样可以限制枚举里面的数据,防止值的重复。用户也可以输入值或者名称。