演算子のオーバーロード
C++のように柔軟にはできないようだ。
Message Block クラスつくって、例によって出力演算子とかで
mblk << length; mblk << "strings";
みたいにバッファにデータを放り込める様にしようとおもったら、C#ではシフト演算子は出力演算子としてはあつかってくれなくて、右オペランドはint型だけだとか言われてしまった。まぁ確かにオブジェクト指向的にはこういう演算子の使い方は合致しないんだけど、直感的で便利な記述方法だったのでちょっと残念。
他にも、演算子の引数として参照を得る事はできなくなってた。つまり、演算子は常に新たなオブジェクトを生成して帰す事になるようだ。これはどうなんだろうなぁ。