rksoftware

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

C# 2.0 以降の新機能の確認 - C# 7.1 - “既定” リテラル

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

“既定” リテラル

 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/default#default-literal
 型を推論できる個所では、規定値を設定する際の default(型名) の型名を省略できるようになりました。

static void Main(string[] args)
{
    // これまでは default(int) の様に型の指定が必要だった
    int i = default;
    Console.WriteLine(i);

    // 戻り値の型から推論可能
    Console.WriteLine(D());

    // 戻り値の型から推論可能
    Func<string> l = () => default;
    Console.WriteLine(l() == null);

    // 変数の型から推論可能
    string s = default;
    // ?? でも
    Console.WriteLine(s ?? default);
    // 三項演算でも
    Console.WriteLine(s == null ? default : s);
}

static DateTime D()
{
    // 戻り値の型から推論可能
    return default;
}