我需要在我的C#应用程序中使用这个枚举,但它不会让我使用这些值。当我将类型指定为uint时,我可以使用-1值,当我指定int时,我不能使用最后2个值。有没有办法在这里使用unchecked关键字来允许我定义所有这些值?这些值来自外部源,因此我无法更改它们。
internal enum MyValues : int
{
value1 = -1,
value2 = 0,
value3 = 0x80000000,
value4 = 0xFFFFFFFF
}
答案 0 :(得分:9)
如果您希望-1
与0xFFFFFFFF
的值不同,则需要大于32位的数据类型。试试long
。
答案 1 :(得分:3)
0xFFFFFFFF是32位数,因此它应该适合enum:int (我觉得长型是一种矫枉过正:) :)
你试过吗
enum YourEnum : int { /*...*/, value4 = unchecked( (int)0xFFFFFFFF ) };
答案 2 :(得分:2)
由于这些值看起来是常量,因此只需创建一个静态类来保存值。此外,您可以使用您想要的任何类型:
public static class MyValues
{
public const int value1 = -1;
public const int value2= 0;
public const int value3 = 0x80000000;
public const int value4 = 0xFFFFFFFF;
}
答案 3 :(得分:2)
解决此问题的一种方法是使用enum
(0,1,2,3)的常规值,并创建一个或一对方法将传入值转换为{{1}成员,反之亦然。
答案 4 :(得分:1)
也许尝试ulong enums而不是int?