如何在枚举中使用不安全的值?

Jon*_*ury 7 c# enums interop unsafe

我需要在我的C#应用​​程序中使用这个枚举,但它不会让我使用这些值.当我将类型指定为uint时,我可以使用-1值,当我指定int时,我不能使用最后2个值.有没有办法在这里使用unchecked关键字来允许我定义所有这些值?这些值来自外部源,因此我无法更改它们.

internal enum MyValues : int
{
    value1 = -1,
    value2 = 0,
    value3 = 0x80000000,
    value4 = 0xFFFFFFFF
}
Run Code Online (Sandbox Code Playgroud)

Aak*_*shM 9

如果你想-1成为一个不同的值0xFFFFFFFF,你将需要一个大于32位的数据类型.试试long.


小智 5

0xFFFFFFFF 是一个 32 位数字,所以它应该适合 enum : int (我觉得 long 类型有点矫枉过正了:))

你有没有尝试过

enum YourEnum : int { /*...*/, value4 = unchecked( (int)0xFFFFFFFF ) };
Run Code Online (Sandbox Code Playgroud)