7

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

internal enum MyValues : int
{
    value1 = -1,
    value2 = 0,
    value3 = 0x80000000,
    value4 = 0xFFFFFFFF
}
4

5 回答 5

8

如果您想-1成为与 不同的值0xFFFFFFFF,您将需要大于 32 位的数据类型。试试long

于 2010-04-12T16:02:32.370 回答
4

0xFFFFFFFF 是一个 32 位的数字,所以它应该适合枚举:int(我觉得 long 类型是一种矫枉过正 :))

你有没有尝试过

enum YourEnum : int { /*...*/, value4 = unchecked( (int)0xFFFFFFFF ) };
于 2011-06-10T23:19:32.943 回答
2

解决此问题的一种方法是使用 (0, 1, 2, 3) 的正常值enum,并创建一个类或一对方法将传入的值转换为enum成员,反之亦然。

于 2010-04-12T16:09:28.513 回答
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;
}
于 2010-04-12T16:05:26.423 回答
1

也许尝试 ulong 枚举而不是 int?

于 2010-04-12T15:59:20.843 回答