C#枚举的转换问题

classProgram{enumGender{男,女}staticvoidMain(string[]args){Console.WriteLine("Input");s... class Program
{
enum Gender
{
男,

}
static void Main(string[] args)
{
Console.WriteLine("Input");
string s =Console.ReadLine();
Gender sex = (Gender)(Enum.Parse(typeof(Gender), s));
Console.WriteLine(sex);
Console.ReadKey();
}
}
当输入0,输出男,输入1,输出女。在输入大于1的整数就会输出该整数,这是为什么?
展开
 我来答
哲事姓无
2013-08-17 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:444万
展开全部

默认下枚举基础类型为int,而第一个枚举值默认为0,第二个为1,第三个以此类推,所以你所定义的枚举完整的格式如下

enum Gender : int
    {
        男 = 0,
        女 = 1
    }


所以当使用Enum.Parse进行解析时,只能识别出0与1与,其它无法识别直接输出,然后你也可以直接使用字符来进行解析,而不仅仅是数字 ,如下

var sex = (Gender)(Enum.Parse(typeof(Gender), "男"));
var sex = (Gender)(Enum.Parse(typeof(Gender), "女"));
随机数xZ
2013-08-17 · TA获得超过357个赞
知道小有建树答主
回答量:372
采纳率:0%
帮助的人:420万
展开全部
如果没猜错的话:
运行这段(Gender)(Enum.Parse(typeof(Gender), s));是通过枚举的索引进行了隐式匹配.
所以输入0,输出男,输入1,输出女,没有找到索引则输出本身值.

因为数据库 bit类型字段就与C#中进行了隐式匹配.bit=0,则为C#就是false 反则为true

希望能帮到你!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ae3233c
2013-08-17 · TA获得超过1175个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:479万
展开全部

C# 的枚举默认是integer类型的值, 第一个元素值为0, 第二个元素值为1, 以此类推.

也可以自己定义枚举的值, 如下:

enum Gender {
  男 = 3, // 起始值默认为零, 可以自定义为零或任意正整数
  女 = 8  // 后面的元素值一定要大于前一个元素值, 比如这里值设为2就不行
}

 这时你再输入0或1就没用了, 只有输入对应的值才会显示对应的枚举项

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
06213142
2013-08-17 · TA获得超过445个赞
知道小有建树答主
回答量:335
采纳率:100%
帮助的人:204万
展开全部
C# 自定义枚举类型的时候,没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int型,从0开始。枚举类型与基础类型可以相互转换,你输入的大于1没有对应的枚举,就只能输出该整数了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式