(求助啊)搞不明白。。

Interface 2011-05-20 12:37:46
那位大哥能帮我解释一下这两段代码运行的结果为什么不同啊..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace output
{
enum Day
{
一,二=2,三=2,四,五
}
class Program
{
static void Main(string[] args)
{
Day d = (Day)2;
Console.WriteLine(d);
}
}
}

结果是 “三”。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace output
{
enum Day
{
一,二=2,三=2,四
}
class Program
{
static void Main(string[] args)
{
Day d = (Day)2;
Console.WriteLine(d);
}
}
}

结果是“二”。


谢谢了!!!
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
am 2011-05-20
  • 打赏
  • 举报
回复
enum 枚举类型各个子项应该对应不用的值,你这个对应相同的值,这不好说
isjoe 2011-05-20
  • 打赏
  • 举报
回复
这样的枚举,失去了意义
漫天雪飞 2011-05-20
  • 打赏
  • 举报
回复
这个实在是没法解释。enum当有相同的值时是由CLR决定的
ohkuy 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 caozhy 的回复:]
看了下反汇编的IL和机器码。

原理是CLR在装箱的时候,会指派一个值等于给定数值的枚举类型。

这个过程是CLR决定的,不可控。
[/Quote]
+1
enum 枚举类型各个子项应该对应不同的值,
你有相同的值就由CLR决定了
threenewbee 2011-05-20
  • 打赏
  • 举报
回复
看了下反汇编的IL和机器码。

原理是CLR在装箱的时候,会指派一个值等于给定数值的枚举类型。

这个过程是CLR决定的,不可控。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧