rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 7.3 - メンバー初期化子とクエリ内の式変数の宣言

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

メンバー初期化子とクエリ内の式変数の宣言

 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7#out-variables
 フィールド初期化子、プロパティ初期化子、.コンストラクター初期化子、クエリ句で式変数 を含む式が許可される。

// C# のバージョンを低く設定すると
// エラー CS8107  機能 'メンバー初期化子とクエリ内の式変数の宣言' は C# X では使用できません。7.3 以上の言語バージョンをご使用ください。

public class A
{
    public A(out int v) => v = default;

    // フィールド初期化子
    int F = int.TryParse("1", out var v) ? v : default;

    // プロパティ初期化子
    int P { get; set; } = int.TryParse("1", out var v) ? v : default;
}

public class B : A
{
    // コンストラクター初期化子
    public B(int i) : base(out var v) => Console.WriteLine(v);
}