当我使用以下代码时:
using System;
namespace Foo {
[Flags]
public enum Bar : ulong {
None = 0x0000000000000000,
A = 0x8000000000000000,
B = 0x0000000000000001L | A,
C = 0x0000000000000002L | B,
D = 0x0000000000000004L | A,
All = A | B | C | D
}
}
Run Code Online (Sandbox Code Playgroud)
单声道编译器崩溃.这是由于语义错误(语言中不允许的),但编译器没有注意到这是一个编译器错误?
版本:单声道2.10.8.1
我在bugzilla上提交了一个错误报告(https://bugzilla.xamarin.com/show_bug.cgi?id=15801)
从C#语言规范,第14.3节:
枚举成员的关联值不能直接或间接使用其自己的关联枚举成员的值.除了这种循环限制之外,枚举成员初始化器可以自由地引用其他枚举成员初始化器,而不管它们的文本位置如何.
所以你的代码应该是正确的(因为它已在评论中提出),因此它应该是编译器错误.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |