C#4.0

仕事で.Net4.0環境を使うことになりそうな気配だったのでちょっと調べてみた。
とはいえ仕事で使う範囲では実は.Net3.5環境で十分なのだけど、開発環境は4.0になりそうなので4.0について知っておけばアドバンテージあるだろ?.Net3.5になったとき(というかC#3.0になったとき)、今でも別に困ってねーからどうでもいいやと思っていたけど、今となってはラムダ式と拡張メソッド、そしてLINQのない世界には戻りたくないです・・・。
というわけで、調べた結果役立ちそうなことをメモ。ソースはいつものごとく未確認飛行C。このサイトお世話になりすぎる。

  • オプション引数

まぁ、Type.Missingを書かなくてよくなるとか、コンストラクタの宣言に:thisつけなくよくなったり、引数省略のためだけの使うんだか使わないんだかよくわからないオーバーロードを量産する必要はなくなった・・・がデメリットもあるのでご利用は計画的に。特にプラグイン(クラスライブラリ)関連では使わないほうがよさそう。でも対COM(と書くとCPU対戦にしか見えないな)ではクソ便利。

これは密かに「普段気にしないけどいざ使えない状況に陥ると発狂するほど便利な機能」な気がする。IEnumerable引数にList(当然class Inhelit : Base{}です)をそのまま突っ込めるんだろ?例えば敵とアイテムのリストを当たり判定の効率化等のために別々に持っていてプレイヤーとそれらの衝突判定をするとか、ゲームでは頻出パターンだし。

  • Dynamic

用途色々。Javascript的なことができるようになるのかなぁ。でもうっかり乱発すると静的型付け言語としての優位性が失われるので使いどころが難しいな。クラスやメソッドの中で閉じてる分には大丈夫?publicなプロパティの戻り値の型がDynamicだったら世紀末の幕開けだね!!


第一印象は大体こんな感じ。