>>804
エージェント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¢