A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 风雪再现 中级黑马   /  2013-4-17 09:53  /  2708 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 风雪再现 于 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();
        }
    }
这样读取枚举有什么作用?枚举在程序中如何利用?感觉好懵,直接用变量不是差不多吗?好像还简单一些呢。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

7 个回复

倒序浏览
在实际应用中,有的变量只有几种可能的取值。
如表示颜色的名称,表示月份的名称等。为了提高程序描述问题的直观性,Java后面的版本引入了和C中类似的枚举类型机制。程序用枚举方法列举一组标识符作为枚举类型的值的集合。当一个变量具有这种枚举类型时,它就能取枚举类型的标识符值。所以在要表示变量只有几种可能的取值时,用枚举类型。
也就像星期那样只有7种可能,而且7种可能都是确定的!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
变量的值只限于列举出来的值的范围内.
像你只有两个值,男和女,Gender.男或Gender.女,性别就只有这两种情况。
你上面的程序是为了验证你回答的只有这两种情况,其他都是输入错误。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 ↖落葉下♀媃媚 于 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);
             }

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
枚举是控制你输入的值必需为枚举变量中的值,如果不是就会报错,
回复 使用道具 举报
枚举的作用是:
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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
张林杰 发表于 2013-4-17 11:42
枚举的作用是:
1)使用户不能随意赋值,只能在定义枚举时列举的值中选择
2)不需要记每一个值是什么,只需 ...

谢谢,明白了
回复 使用道具 举报
谢谢了,之前我只是限定在这几句代码之中了,如果在不同的地方都调用枚举定义的值,应该早就明白了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马