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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑骏马 中级黑马   /  2013-8-1 01:40  /  2249 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.     class Program
  2.     {
  3.         enum Gender { 男,女 }
  4.         static void Main(string[] args)
  5.         {
  6.             Gender sex;
  7.             Console.WriteLine("请输入你的性别(男/女):");
  8.             string s = Console.ReadLine();
  9.             try
  10.             {
  11.                 sex = (Gender)(Enum.Parse(typeof(Gender), s));
  12.                 Console.WriteLine("性别是"+sex);
  13.             }
  14.             catch
  15.             {
  16.                 Console.WriteLine("输入有误。");
  17.             }
  18.             Console.ReadKey();
  19.         }
  20.     }
复制代码
枚举类型Gender的值应该只有男和女才对,但输入数字(包括0和1以外的)程序也会正常运行,输出输入的数字。
枚举类型的值不受定义时写好的值的数量限制吗?(上例中只定义了男女两个值,对应的int值是0和1,但是2以后的int值也可以赋给Gender型变量sex。。。)
.

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

4 个回复

倒序浏览
1. 按照系统的默认,枚举中的每个元素类型都是int型,且第一个元素删除的值为0,它后面的每一个连续的元素的值按加1递增。
2. 在枚举中,也可以给元素直接赋值,如下把性别中的男的值设为0,其后的元素的值分别为1。
    enum Gender { 男=0,女 }
回复 使用道具 举报
枚举的本质就是int,只不过限定了一个范围。
输其他值时,强制转换为int,而不会检查其是否超出范围。
一个不是Gender类型的值,被强制转换为Gender类型,没有实际意义。
回复 使用道具 举报
是有这样的情况

所以建议在转之前,可以先用Enum.IsDefined(typeof(Gender), n))这个方法判断:某个整型是否定义在枚举中

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马