在阅读了最近的问题之后,在另一个枚举声明中允许不同枚举类型之间的操作,但在其他地方不允许,我想出了这个例子:
enum Alpha : long
{
X,
}
enum Beta : ulong
{
X,
}
enum Gamma : long
{
X = Alpha.X | Beta.X, // problem?
}
enum Delta : ulong
{
X = Alpha.X | Beta.X, // no problem?
}
编译结果:Gamma
不会编译(CS0266:无法将类型“ulong”隐式转换为“long”。存在显式转换(您是否缺少演员表?))。Delta
编译愉快。
这难道不是 C# 语言规范所期望的吗?
Alpha
(注意:如果我将要初始化的成员更改为负常量,例如-1L
,那么既Gamma
不会也Delta
不会编译。)