首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐式枚举转换会转换什么?

隐式枚举转换会转换什么?
EN

Stack Overflow用户
提问于 2017-06-08 14:25:49
回答 1查看 157关注 0票数 1

来自C# 5.0规范

6.1.3隐式枚举转换 隐式枚举转换允许将十进制整数-文字0转换为任何枚举类型和基础类型为枚举类型的任何可空类型。在后一种情况下,转换是通过转换到基础枚举类型并包装结果来计算的(§4.1.10)。

“十进制-整数-文字0”是指整数值0吗?

如果是,为什么隐式枚举转换不允许其他整数值,如1,2,3,…被转换成任何枚举类型?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-08 17:13:02

是的,它的意思是字面0。例如:

代码语言:javascript
复制
static void Main()
{
   Method(0);
}

static void Method(DayOfWeek dow)
{
  Console.WriteLine(dow);
}

应该将Sunday打印到控制台。如果将0转换为1,则程序是非法的(编译时错误)。

只有(编译时常数)零有一个隐式转换到枚举类型。对于其他值,您需要显式的强制转换,如在Method((DayOfWeek)1);中。

编辑:这解释了规则是怎样的。如果您想知道他们为什么选择这些规则,我推荐Damien_The_Unbeliever和CodeCaster在评论中的链接(指向上面的问题)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44438443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档