:基になる型を指定する「INT」は、私がいることを見たら、私は周りを見て必要があるだろうし、彼らはそのようにすべての列挙型をdelcareかどうかを確認します。もしそうなら、彼らはたぶんそのようにenumを書くことを学んだだけかもしれません(あるいは、おそらく彼らはハイパー・リバーサル・コーダーです)。しかし、この列挙型がこのように宣言されたのであれば、おそらくプログラマはこれが根本的な "int"型を持つことが重要であると言うことをコメントしているかもしれません。おそらく、それはバイナリシリアライズされているか、どこかでデシリアライズされています。
[Flags]属性に関しては、C#に関する限り、[Flags]で宣言されたものだけでなく、任意の列挙型でビット単位の演算子を使用できます。上記の例では、[Flags]が指定されていないため、以下は完全に合法です。
abc myAbcValue = value1 | value2;
[Flags]の主な違いは、EnumのToString()およびParse()メソッドにあります。 [Flags]を指定しない場合、myAbvValue.ToString()は "3"を返しますが、[Flags]を使用すると "value1、value2"が返されます。同様に、[Flags]で、
abc yourAbcValue =(abc)Enum.Parse(typeof(abc)、 "value1、value2");
列挙のIsDefined()メソッド(すなわち3
注にyourAbcValueの基本値を設定しますが)ので、[フラグ]列挙型との複数の値を許可しない:
Enum.IsDefined (typeof(abc)、 "value1、value2")
は[Flags]の使用に関係なくfalseを返します。
また、[Flags]は任意のリフレクションアクセスに関する情報を提供し、他の言語はフラグ付き列挙型の制限を通常の列挙型とは異なる方法で処理することがあります。