質問:
C# では、なぜコンパイラが複数の列挙型の割り当てを許可するのですか?同じ値に?このような場合、代わりに構造体を使用することをお勧めしますか?
回答:
C# の enum は、基本的に System.Enum 基本クラスから継承する構造体です。バックグラウンドで、列挙値は構造体内の定数として定義されます。たとえば、次の enum 定義:
public enum Color { Red = 1, Blue = 1, Green = 1 }
は、次の疑似 C# コードと同等です:
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
同じ値を持つ複数の定数を含む型には問題がないため、一意でない値を含む列挙型を定義することは許容されます。ただし、いくつかの注意事項があります:
一意でない列挙値を使用することは技術的には合法です。 、一般的には落胆しました。代わりに、一意の値を持つ明示的なメンバーを定義できる構造体の使用を検討してください。ただし、構造体は列挙型と比較してメモリ オーバーヘッドが高い場合があるため、要件に基づいて慎重に使用してください。
以上がC# で一意でない列挙値が許可され、代わりに構造体を使用する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。