7

この列挙型をC#アプリケーションで使用する必要がありますが、これらの値を使用できません。タイプをuintとして指定すると、-1の値を使用でき、intを指定すると、最後の2つの値を使用できません。ここでチェックされていないキーワードを使用して、これらすべての値を定義できるようにする方法はありますか?これらの値は外部ソースからのものであるため、変更できません。

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

これらの値は一定に見えるため、値を保持する静的クラスを作成するだけです。また、必要なタイプを使用できます。

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 に答える
2

enumこれを解決する1つの方法は、 (0、1、2、3)に通常の値を使用し、クラスまたはメソッドのペアを作成して、着信値をenumメンバーに、またはその逆に変換することです。

于 2010-04-12T16:09:28.513 に答える
1

たぶん、intの代わりにulong列挙型を試してみてください。

于 2010-04-12T15:59:20.843 に答える