Cri*_*scu 9 c# enums compiler-errors
拿这段代码:
enum En {
val1,
val2,
}
void Main()
{
En plop = 1; //error: Cannot implicitly convert type 'int' to 'En'
En woop = 0; //no error
}
Run Code Online (Sandbox Code Playgroud)
当然它分配失败时1
至enum
型变量.(打一个明确的演员,它会起作用.)
我的问题是:为什么分配0时不会失败?
就是这样,因为这就是规范所说的......
这是另一个原因,为什么给你的所有枚举一个值为0的项目总是一个好主意,因为你有时可能会得到它们的价值.
C#语言规范6.1.3中的相应部分:
6.1.3隐式枚举转换
隐式枚举转换允许将decimal-integer-literal 0转换为任何枚举类型和任何可以为其类型为枚举类型的可空类型.在后一种情况下,通过转换为基础枚举类型并包装结果来评估转换(第4.1.10节).
至于为什么会这样 - 嗯,我想只有语言委员会中有人会决定这些事情才会知道.
事实上,如果你看一下Rawling对原始问题的评论,我们确实有类似的东西.
归档时间: |
|
查看次数: |
962 次 |
最近记录: |