目次

Ver. 9.0
リリース時期 未定(おそらく .NET 5 ど同じ 2020/11)
同世代技術
  • .NET 5
要約・目玉機能

.NET 5 Preview 2 (2020/3)頃から、C# 9.0 機能もちらほらプレビュー実装され始めました。 プレビュー状態なので言語バージョンpreview の指定が必要です。

執筆予定: C# 9.0 トラッキング issue

トップ レベル ステートメント

トップ レベル(top-leve: クラスや名前空間よりも外側、ファイル直下)にステートメントを直接書けるようになりました。

例えばよくある「Hello World」であれば、単に以下のように書けるようになります。

using System;
Console.WriteLine("Hello World!");

詳しくは「トップ レベル ステートメント」で説明します。

ターゲットからの new 型推論

ターゲット型からの推論が効く場合に、new T()T の部分を省略できるようになりました。 (target-typed new とか呼ばれたりします。)

特に、var が使えず、 型名が長い特に便利です。

using System.Collections.Generic;
 
class Sample
{
    // フィールドに対しては var が使えない。
    // 代わりに new 型推論を使うと便利なことがある(特に、型名が長い時)。
    Dictionary<string, List<(int x, int y)>> _cache = new();
}

詳しくは「ターゲットからの new 型推論」で説明します。

その他

ラムダ式の引数を破棄

ラムダ式の引数で、_ を使った値の破棄ができるようになりました。

static void Subscribe(INotifyPropertyChanged source)
{
    // _ を破棄扱いして、2個以上並べられる
    source.PropertyChanged += (_, _) => { };
}

詳細は「値の破棄 - ラムダ式の引数」で説明します。

更新履歴

ブログ