【C#】target-typed new 式でコードを簡潔に書く方法

C# 9 以降では target-typed new 式が導入され、右辺に型を明示しなくても左辺の型から推論できるようになりました。これによりコードの冗長さを減らし、よりシンプルに記述できます。本記事では target-typed new の基本と使い方を紹介します。

従来のnew式

C# 8 以前では、変数宣言時に左辺と右辺の両方に型を記述する必要がありました。

Dictionary<string, int> scores = new Dictionary<string, int>();
List<string> names = new List<string>();

型を何度も繰り返し書く必要があり、コードが冗長になりやすい点が課題でした。

target-typed newの基本

C# 9 からは左辺の型情報を使って右辺の new の型を推論できるようになりました。

Dictionary<string, int> scores = new();
List<string> names = new();

このように右辺の型を省略でき、コードがすっきりします。

メソッド引数での利用

引数の型が明確な場合も target-typed new を使えます。

void PrintPoint(Point p)
{
    Console.WriteLine($"({p.X}, {p.Y})");
}

PrintPoint(new(10, 20)); // Point型と推論される

プロパティ初期化での利用

プロパティやフィールドの初期化時にも使えます。

public class Student
{
    public List<string> Courses { get; set; } = new();
}

制限事項

– 型が推論できない場合は利用できません。
– var と組み合わせると型が曖昧になるため使用できません。

var scores = new(); // コンパイルエラー(型が不明)

メリット

  • コードが簡潔になり、可読性が向上する
  • 型を二重に書く必要がなくなり、記述ミスを防げる
  • フィールド初期化やメソッド呼び出しで便利に使える

まとめ

target-typed new は、C# 9 で追加されたシンプルながら強力な機能です。
冗長な型指定を省略でき、コードを読みやすく保てるため、日常的な開発で積極的に活用すると良いでしょう。