[Flags]の列挙型を設定する一連の条件文を使用しようとしています。しかし、コンパイラは 'm'が割り当てられていないと訴える。意図した機能を達成するために、次のような書き換えはできますか?.NETの列挙型フラグ
Media m;
if (filterOptions.ShowAudioFiles)
m = m | Media.Audio;
if (filterOptions.ShowDocumentFiles)
m = m | Media.Document;
if (filterOptions.ShowImageFiles)
m = m | Media.Image;
if (filterOptions.ShowVideoFiles)
m = m | Media.Video;
すべての条件が満たされない場合はどうなりますか? 0の場合Media.Audio? *有効な初期値が必要です。 – EricSchaefer
これは悪いアドバイスです。整数型キャストに頼るよりも、明示的な値を使用する方が良いでしょう。 – Randolpho
実際にはありません。 "有効な"フラグが設定されていなくても、enumは完全に正常に動作します。それでも価値があります。すべてのenumは、デフォルトで "Int32"から継承されます。はい、後でデフォルト値を処理しないと他の問題が発生する可能性があります。しかしそれは例外のためのものです。 –