C#显式枚举转换问题

usingSystem;enumColor{Red,Green=10,Blue}classTest{publicstaticvoidMain(){Console.Writ... using System;
enum Color
{
Red,
Green=10,
Blue
}
class Test
{
public static void Main()
{
Console.WriteLine(StringFromColor(Color .Red));
Console.WriteLine(StringFromColor(Color .Green));
Console.WriteLine(StringFromColor(Color .Blue));
}
static string StringFromColor(Color c)
{
switch (c)
{
case Color .Red :
return string.Format("Red={0}",(int)c);
case Color .Green :
return string.Format("Green={0}",(int)c);
case Color .Blue :
return string.Format("Blue={0}",(int)c);
default :
return "No Color";
}

}
}
我不明白为什么blue输出的结果是11,red输出的结果是0,请高手指教,谢谢!
展开
 我来答
dkxpsg
2009-01-28 · TA获得超过1627个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:1043万
展开全部
因为你给Green赋了初值,在Green后定义的数值为Green的值+1,如
enum Color
{
Red,
Green=10,
Blue,
Yellow,
Black =20,
White
}
Yellow就为12,White为21,下面是MSDN里的enum的定义

enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常数组成的独特类型。每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。例如:
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
在此枚举中,Sat 为 0,Sun 为 1,Mon 为 2,依此类推。枚举数可以具有重写默认值的初始值设定项。例如:
enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
在此枚举中,强制元素序列从 1 而不是 0 开始。

可以给 Days 类型的变量赋以基础类型范围内的任何值,所赋的值不限于已命名的常数。

enum E 的默认值为表达式 (E)0 产生的值。

注意
枚举数的名称中不能包含空白。

基础类型指定为每个枚举数分配的存储大小。但是,从 enum 类型到整型的转换需要用显式类型转换来完成。例如,下面的语句通过使用强制转换从 enum 转换为 int,将枚举数 Sun 赋给 int 类型的变量:
int x = (int)Days.Sun;
明桖瑶gr
2009-01-28 · TA获得超过1205个赞
知道小有建树答主
回答量:397
采纳率:100%
帮助的人:617万
展开全部
枚举数的具体数值,是根据上一个枚举数确定的。

Green 被手工指定为 10(若不指定,默认为 1),那么 Blue 的值则为 Green + 1 即为 11(若 Green 没有指定,则 Blue 为 2)

Red 没有指定值,默认为零(枚举体中,第一个枚举数默认值是零)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rainingheart
2009-01-28 · TA获得超过509个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:0
展开全部
int 枚举已零为开始,即 red 0,后面如不赋值那green应为1,blue为2
而后指定green =10,此时已从10开始递增
blue就为11了
(每次+1)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兔子长刺
2009-01-29
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
枚举的输出是从0开始的依次往下,但如果有赋值的话就应该从所赋值的值依次往下。例如
星期一,星期二=20,星期三,星期四=0,星期五
则输出的结果是星期一为0,星期二为20,星期三为21,星期四为0,星期五为1。
这样说能明白吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式