C Sharp
型推論可能な場面では、defaultの型指定は省略可能となった。
クロージャの機能を提供する匿名デリゲートが導入された。
C#の言語仕様は標準化団体Ecma Internationalを通じて公開・標準化されており、第三者がマイクロソフトとは無関係にコンパイラや実行環境を実装することができる。 現段階で、C#コンパイラの実装は次の5つが知られている。
マイクロソフト製 Visual Studio 2015 以降で使用されている、.NETコンパイラプラットフォーム (コードネームRoslyn)。ApacheライセンスのオープンソースプロジェクトでGitHubで公開されている。Windows、macOS、Linuxで動作する。C#のコンパイラはC#、VB.NETのコンパイラはVB.NETで実装されている。以前のコンパイラと比べて、リファクタリングやIDE、スクリプティングなどへの利用が可能なAPIが公開されており、コンパイラ以外への様々な応用が可能。 Visual Studio 2013 まで使われていた、マイクロソフトによるVisual C# コンパイラ。 2006年のC# 2.0当時の、マイクロソフトによるShared Source Common Language Infrastructure。共通言語基盤 (CLI) とC#コンパイラがソースコードで公開されている。
Mono ProjectによるMono内の Mono Compiler Suite (mcs)。
2012年まで開発されていた、DotGNU ProjectによるPortable.NET内の the C-Sharp code compiler (cscc)。
is 式の拡張
is式の構文が拡張され、型の後ろに変数名を宣言できるようになった。 拡張されたis式はマッチした場合に宣言した変数にキャストした値を代入し、さらにtrueと評価される。 マッチしなかった場合はfalseと評価され、宣言した変数は未初期化状態となる。
switch 文の拡張
switch文のマッチ方法が拡張され、caseラベルに従来の「定数パターン」に加え、新たに「型パターン」を指定できるようになった。 また、「型パターン」のcaseラベルでは、when句に条件を指定することができる。 「型パターン」を含むswitch文では、必ずしも条件が排他的でなくなったため、最初にマッチしたcaseラベルの処理が実行される。
出力変数宣言
パターンマッチング (is 式/switch 文)
タプル (タプル記法/分解/値の破棄)
ローカル関数
数値リテラルの改善(桁セパレータ/バイナリリテラル)
ref戻り値、ref変数
非同期戻り値型の汎用化
Expression-bodied 機能の拡充(コンストラクタ/デストラクタ/get/set/add/remove)
Throw 式
プロパティをより簡潔に記述するための自動実装プロパティが導入された。プロパティの定義に get; set; と記述することで、プロパティの値を保持するための匿名のフィールド(プログラマは直接参照することはできない)と、そのフィールドにアクセスするためのアクセサが暗黙に定義される。また、C# 5.0 までは get;とset;のどちらか片方だけを記述することは出来なかったが、C# 6.0 からは get; のみが可能。以下のコード:
は、以下のようなコードに相当する動作をする:
但し、上のコードでは匿名のフィールドに便宜的に __value と命名している。実際はプログラマはこのフィールドにアクセスすることはできない。