C♯相談室 Part4
■ このスレッドは過去ログ倉庫に格納されています
0808FERC.NET
NGNGエージェント1号の意見ですが..
enumは整数定数です。そのビット演算をしたコードのILを見てください。結果の数値しか書いてありません。
C#のenumはある意味、定数のシンタックスシュガーです。
FlagsAttributeは、Enumのメソッドの動作を変えるためのものです。Enumは整数定数ですから、
定数同士の演算には何の影響もありません。というのも、原始型の演算はIL命令(Addなど)が
吐き出されるので、属性が介入する余地がないからです。
enumのメリットは、引数や戻り値に指定できて、コンパイラが型チェックをできること。
たとえば、
enum Enu { a, b, c }
void Meth(Enu enu) { ... }
のとき、Meth(Enu.a); はできますが、Meth(System.Loader...); はできません。
ですが、この場合もこんなことはできてしまいます。
Meth((Enu)123);
Enumは整数定数です。ただ、Enumはその名前から意味がおおよそ推測できるので、
SingleDomainとMultiDomainを|することは実際あまり考えられないと思います。
2¢
■ このスレッドは過去ログ倉庫に格納されています