C Sharp
イテレータ#C# 2.0を参照。

yieldキーワード
yieldキーワードによるコルーチンを使うことで、イテレータの生成を楽に実装できるようになった。
リストや配列に対するパターンマッチが可能になった。
また、Span<char>やReadOnlySpan<char>に対するパターンマッチが可能になった。
dynamicキーワードが導入され、動的型付け変数を定義できるようになった。dynamic型として宣言されたオブジェクトに対する操作のバインドは実行時まで遅延される。
C#7.3では以下の仕様が追加された。
ジェネリック型制約の種類の追加 System.Enum, System.Delegate unmanaged (文脈キーワード)
refローカル変数の再割り当て
stackalloc初期化子
Indexing movable fixed buffers
カスタムfixedステートメント
オーバーロード解決ルールの改善
出力変数宣言の利用箇所の追加
タプル同士の比較
バッキングフィールドに対するAttribute指定
ECMA-334 3rd/4th/5th edition によると、C# は「C Sharp」(シーシャープ)と発音し、LATIN CAPITAL LETTER C (U+0043) の後に NUMBER SIGN # (U+0023) と書く。 音楽のシャープ (♯, MUSIC SHARP SIGN (U+266F)) ではなくナンバーサイン (#) を採用したのは、フォントやブラウザなどの技術的な制約に加え、ASCIIコードおよび標準的キーボードには前者の記号が存在しないためである。
"#"接尾辞は、他の.NET言語にも使用されており、J#(Javaのマイクロソフトによる実装)、A#(Adaから)、F#(System Fなどから)が含まれる。また"#"接尾辞はGtk#(GTKなどのGNOMEライブラリの.NETラッパ)、Cocoa#(Cocoa (API)のラッパ)などのライブラリにも使用されている。そのほか、SharpDevelopなどの"Sharp"を冠する関連ソフトウェアも存在する。
C#という名称の解釈として、「(A-Gで表された)直前の音を半音上げる」という音楽記号の役割に着目し、「C言語を改良したもの」を意味したのではないか、というものがある。これは、C++の名称が「C言語を1つ進めたもの」という意味でつけられたことにも似ている。
アンダース・ヘルスバーグは、「C#」が「C++++」(すなわち「C++をさらに進めたもの」)にみえるのが由来である、と語っている。
非同期処理 (async/await)
呼び出し元情報属性
foreach の仕様変更
静的 using ディレクティブを利用することで、型名の指定無しに他クラスの静的メンバーの呼び出しを行えるようになった。利用するにはusing staticの後に完全修飾なクラス名を指定する。