ふらっとC#,C♯,C#(初心者用) Part39
at TECH
409:デフォルトの名無しさん
09/03/25 07:08:14
>>393(>>373>>386>>376)
勘違いするやつが現れないように代わりに答えておこうか。
まず先に一言、[Flags] enum に限れば「(e & MyEnum.Foo) != 0」は基本 NG だが
元の例はそもそも [Flags] enum じゃないから関係ない。
で、enum の話しに戻すと、
[Flags]
enum MyEnum { A = 0x1, B = 0x2, AB = A | B }
var e = MyEnum.A;
if((e & MyEnum.AB) != 0) {
Console.WriteLine("I'm AB.");
if((e & MyEnum.AB) != MyEnum.AB) Console.WriteLine("Really?")
}
例え Flags が付いていたとしても、全ての定数が排他とは限らない。
結合定数を定義することは十分有り得るし、Keys のような特殊な例もある。
「... != 0」と書けるのは、事前に列挙定数の具体値に関する知識を持っていて、
大丈夫であることが分かっている場合のみ。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5255日前に更新/200 KB
担当:undef