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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lgh521911 中级黑马   /  2013-10-5 16:46  /  1992 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      正在工作,把松软的土地踩实中,问题也来了,各位帮帮忙,请看代码
  1. Gender sex;             //定义为枚举类型的变量
  2.             Console.WriteLine("请输入你的性别:");
  3.             string s = Console.ReadLine();
  4.             try
  5.             {
  6.                 sex = (Gender)(Enum.Parse(typeof(Gender), s));              //将string类型转换为枚举类型
  7.                 Console.WriteLine("您输入的性别为" + sex.ToString());
  8.             }
  9.             catch
  10.             {
  11.                 Console.WriteLine("输入有误");
  12.             }
复制代码
跟着视频练习的代码,将字符串类型转换为枚举类型,然后带异常捕获输出。输出后当我输入0的时候显示为男性,输入1的显示为女性。枚举类型在输出后存在自动强制转换吗?然后我输入2,显示为您的性别为2.。。。如果输入男,男性等等等输出都很正常。请教了

4 个回复

倒序浏览
两种方法,
枚举数少的时候,加上一个if判断,
if(sex==Gender.男|sex==Gender.女)
{
Console.WriteLine(sex);
}
枚举数多的时候,加一个try-catch   ,
try中写Convert.ToInt32(sex),catch中输出  Console.WriteLine(sex);
                 

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
黑色海 发表于 2013-10-5 18:05
两种方法,
枚举数少的时候,加上一个if判断,
if(sex==Gender.男|sex==Gender.女)

可以用加bool的类型判断,来进行判断吗?
回复 使用道具 举报
  访问修辞符 enum 枚举名:基础类型   
   {        
    枚举成员   
   }     
  基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int (默认时没有写出来,其实可以改的)
  也就是说int类型是可以强制转化成gender,所以当你输2,找不到2指向的成员,所以sex就等于2
  我是这么理解的,不知道对你有没有帮助,或者你看看下面链接上的,讲得很详细[url=]http://wenku.baidu.com/view/68d8226a1eb91a37f1115ca5.html[/url]



回复 使用道具 举报
追影 发表于 2013-10-6 15:47
访问修辞符 enum 枚举名:基础类型   
   {        
    枚举成员   

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