黑马程序员技术交流社区

标题: 枚举如何使用? [打印本页]

作者: 风雪再现    时间: 2013-4-17 09:53
标题: 枚举如何使用?
本帖最后由 风雪再现 于 2013-4-24 12:13 编辑

enum Gender
    {
        男,
        女,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入你的性别:");
            string str = Console.ReadLine();
            Gender sex;
            try
            {
                sex = (Gender)(Enum.Parse(typeof(Gender), str));
                Console.WriteLine(sex);
            }
            catch
            {
                Console.WriteLine("输入错误!");
            }
            
            
            Console.ReadKey();
        }
    }
这样读取枚举有什么作用?枚举在程序中如何利用?感觉好懵,直接用变量不是差不多吗?好像还简单一些呢。

作者: 645420297    时间: 2013-4-17 10:23
在实际应用中,有的变量只有几种可能的取值。
如表示颜色的名称,表示月份的名称等。为了提高程序描述问题的直观性,Java后面的版本引入了和C中类似的枚举类型机制。程序用枚举方法列举一组标识符作为枚举类型的值的集合。当一个变量具有这种枚举类型时,它就能取枚举类型的标识符值。所以在要表示变量只有几种可能的取值时,用枚举类型。
也就像星期那样只有7种可能,而且7种可能都是确定的!
作者: 梁思思    时间: 2013-4-17 10:32
变量的值只限于列举出来的值的范围内.
像你只有两个值,男和女,Gender.男或Gender.女,性别就只有这两种情况。
你上面的程序是为了验证你回答的只有这两种情况,其他都是输入错误。
作者: ↖落葉下♀媃媚    时间: 2013-4-17 10:39
本帖最后由 ↖落葉下♀媃媚 于 2013-4-17 10:45 编辑

枚举的定义一般是和类定义在同一级别,在同一命名空间下都可以使用这个枚举,定义时我们要指定这个类型的所有值
例如:
enum gender
    {
    男,
    女
}
    class Program
    {
        static void Main(string[] args)
        {
            gender sex;
            sex = gender.男;//这里我们可以通过类名.进行赋值,不必再打字了
            Console.WriteLine("你是{0}生",sex);
            Console.ReadKey();
而你的这块内容
try
             {
                 sex = (Gender)(Enum.Parse(typeof(Gender), str));//这里是把字符串转为枚举类型,用你上面定义的变量sex接收,此刻已经定位你只能输入男或者女,其余的就会出错
                                                                                             
                 Console.WriteLine(sex);
             }
作者: 陈志盟    时间: 2013-4-17 11:06
枚举是控制你输入的值必需为枚举变量中的值,如果不是就会报错,
作者: 张林杰    时间: 2013-4-17 11:42
枚举的作用是:
1)使用户不能随意赋值,只能在定义枚举时列举的值中选择
2)不需要记每一个值是什么,只需要选择相应的值
比如你题目中枚举类型Gender的成员限定为 男 和 女,以此来表示sex(即性别),
问题是性别可以用其他字符串来表示,比如 男孩、女孩、男生、女生等等,
如果你用变量,当你给sex赋值的时候,可用的sex的值就太多了,
又或者其他人要使用你的程序时,他不知道sex到底要赋什么值,
所以为了统一,将sex作为枚举的变量,指定sex的值
下面举个例子:
  1.         static void Main(string[] args)
  2.         {
  3.             //判断从键盘输入的按键是否为F1
  4.             ConsoleKeyInfo r = Console.ReadKey();//此处用结构体变量r接收键盘上键入的按键信息
  5.             if (r.Key == ConsoleKey.F1)//此处ConsoleKey为枚举类型,key为结构体ConsoleKeyInfo的成员,也为枚举类型的变量
  6.             {                           //这里你只需要从下拉列表中进行选择相应值就行了,这样不是相当方便嘛
  7.                 Console.WriteLine("输入的按键为F1");
  8.             }
  9.             else
  10.             {
  11.                 Console.WriteLine("输入的按键不是F1");
  12.             }
  13.             Console.ReadKey();
  14.         }
复制代码

作者: 风雪再现    时间: 2013-4-17 14:55
张林杰 发表于 2013-4-17 11:42
枚举的作用是:
1)使用户不能随意赋值,只能在定义枚举时列举的值中选择
2)不需要记每一个值是什么,只需 ...

谢谢,明白了
作者: 风雪再现    时间: 2013-4-17 15:00
谢谢了,之前我只是限定在这几句代码之中了,如果在不同的地方都调用枚举定义的值,应该早就明白了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2