こないだ Visual Studio 2017 Version 15.4の正式リリースが出たところですが。 (主にUWP/Windows 10 Fall Creators Update絡みだったので個人的にはバグフィックス以外そこまで恩恵なし。)

翌日にもう[Visual Studio 2017 Version 15.5のプレビュー版]が。

「Stepping Back」デバッグ(1つ前のブレークポイントに状態を戻せる機能)とか割かし素敵そうな。

それはそれとして、15.5の告知ブログにはどこにも書かれていませんが、C# 7.2が含まれています。 大々的に書かない辺り、やっぱり自信ないのかな… まあ、こっそり出したところで、Roslynリポジトリを見ていれば15.5で出すことだいぶ前からわかっていますが。

C# 7.2

ということで、C# 7.2。

C# 7.2で追加予定となっている機能を一通り手元で試してみましたが、 「ref local reassignment」以外は実装されていそう。 (※追記: ref local reassignment はそもそも 7.3 に延期されてそう。なので、予定されている機能は全部実装済み。) あと、先日報告を出したバグの修正は、さすがに今回のバージョンには含まれていませんけども、 15.5の正式リリースまでには入ると思います。

試しに一通り書いてみたコードはうちのサンプル リポジトリに置いてあります。

C# 7.1の時と同様に最初は Gist 辺りに書き捨てとこうかと思ったんですが、思ったよりも分量が多く。 結構なコード量だったのでちゃんとソリューションを作って複数のファイルに分けて書くことになったので GitHub リポジトリにコミット。

ref

C# 7.2の当初予定だと「パフォーマンス関連の機能詰め込み」みたいな感じだったんですけど、やっぱ一部はもっと後に伸びました。 で、残ってるのが何かというと、もうほとんどがrefがらみ。

C# 7.0の参照戻り値・参照ローカル変数の延長にあたる機能です。

(※ readonly structs とかは refと関係なさそうにも見えますが、これがないと ref の安全性の保証ができないそうで。)

C# 7.0の参照戻り値の時点で、「9割方の人はおそらく使わない機能」、「残り1割(未満かも)の人が、ライブラリやフレームワークのパフォーマンス改善に使う」、「結果的に、全てのC#ユーザーがパフォーマンス改善の恩恵を受ける」的な機能なわけですが。 C# 7.2はもう、このバージョン全体がそんな感じ。

一応他にも新機能があるんですが、ものすっごい小粒です。