こないだ 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
がらみ。
-
Span
, aka interior pointer, aka stackonly struct - conditional ref operator
- ref extension methods on structs
- Readonly ref
C# 7.0の参照戻り値・参照ローカル変数の延長にあたる機能です。
(※ readonly structs とかは ref
と関係なさそうにも見えますが、これがないと ref
の安全性の保証ができないそうで。)
C# 7.0の参照戻り値の時点で、「9割方の人はおそらく使わない機能」、「残り1割(未満かも)の人が、ライブラリやフレームワークのパフォーマンス改善に使う」、「結果的に、全てのC#ユーザーがパフォーマンス改善の恩恵を受ける」的な機能なわけですが。 C# 7.2はもう、このバージョン全体がそんな感じ。
他
一応他にも新機能があるんですが、ものすっごい小粒です。