C#6 nameofと例外フィルター(when)の嬉しい使い方

with コメントはまだありません

Visual Studio 2015が正式リリースとなり、いよいよC#6時代が幕を開けた。

async, awaitの時のような劇的な変化はないけれど、かゆい所に手が届いた感がある。

今回は、C#6で導入されたnameof 式と例外フィルター(when)を使うと、具体的にどう嬉しいかを考える。

 

nameof 式

変数やプロパティの名前を使いたい時、直接文字列を設定していたけれど、C#6からはnameofを使えばいい。

これはプロパティ名を取るのにも使える。

 

nameofはnullチェックに使える

拡張メソッドを使って、変数のnullチェックをしているプロジェクトは多いと思う。

もし、変数がnullだったらArgumentNullExceptionを投げるだけの簡単なもので、例えばこういうの。

一つ問題があって、ArgumentNullExceptionには変数の名前を渡してあげないといけないから、C#6までは、文字列を直接打ち込んで変数名を渡していた。しかし、これからはnameofがある!

これが、こうなる↓

あとから変数名が変わったときにも対応できるからメンテナンス性があがりましたね。

 

例外フィルター (when)

try – catchで例外の型を指定して例外キャッチできていたけれど、もうちょっと細かいフィルタリングをしたかったので、これは実に嬉しい機能。

具体的には、whenに続けて条件式を書き、それがtrueなら例外をキャッチする。

 

したがって、あまり必要なケースはないけれど、例外オブジェクト以外のフィルターも設定できる。

 

例外フィルターを一括例外キャッチに使う

以前、TOACHの記事で、複数の例外を一箇所でキャッチするテクニックを紹介した。

[C#] 複数の例外(Exception)を一箇所で処理する方法

この記事の方法は純粋なエラー処理にフィルタリングが混じっていて完璧とは言えなかった。

そこで僕らのC#6。whenを使えば、厳密にフィルターとエラー処理を分けることができ、ネストも浅くできる。

これをwhenで書き直すと……

いや〜美しいですね。

 

C#6は他にも便利な機能がたくさん。もっと知りたい方はこちらをどうぞ!