de:code 2017 C#7の一部新機能について
2017-05-30
azblob://2022/11/11/eyecatch/2017-05-30-about-new-feature-of-c7-000.jpg

こんにちは、本日の記事を担当します中田です。
最近とても暑い日も続き、本日東京では30℃を超える場所もあるそうですが皆さん元気に過ごせていますでしょうか。
私は暑いのが苦手ということもあり梅雨前だというのに既にバテ気味でこの夏乗り越せるかこの時期から心配です。

今回は、de:code2017でC#7の新機能に関するセッションを聴いてきたので、それらの機能の一部を自分でさわった感覚も交えながら紹介したいと思います。

まだすべての機能をさわりきれてないので2つの機能だけの紹介となります。

まず1つ目に「throw式」から、
どこにでもかけるわけではありませんが式の中にthrowをかけるようになりました。
下のソースは動作確認がてら記述してみた簡単な使用例です。

string str = null;
string STR = str ?? throw new NullReferenceException(“null
です!”);

「System.NullReferenceException: ‘nullです!’」と
例外によって止まってしまうだけのソースですが、
null合体演算子とともに用いることでif文を使わずに記述できるようになりました。
ソースの読みやすさを考えればどちらがいいのかはわかりませんが、こういった書き方もできるようになったということだけでも覚えておくといいかもしれません。

2つ目に「出力変数宣言」です。
C#7以前は

string str = “3”;
int num;
if (int.TryParse(str, out num)) { //…`}

このように記述していたソースですが、
出力変数の宣言を関数の外で行う必要がなくなり以下のように

string str = “3”;
if (int.TryParse(str, out var num)) { //…`}

と記述することができるようになりました。
たった1行とはいえ出力先をわざわざ外で定義するのはきれいに思えなかったので、
C#7でこのような書き方ができるようになったのにはうれしく思います。

C#自体、私は今年の4月からさわり始めたのでまだ理解は浅いですが、他にも「タプル」や「型スイッチ」などといった便利な機能も増えているのでC#を使っている人はぜひ調べてみてください。