rksoftware

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

明確な代入分析の改善 - C# 2.0 以降の新機能まとめ (C# 10.0 ~ ) (途中)

■ C# 10.0 での新機能

・明確な代入分析の改善 (Improved definite assignment analysis)
  https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/attributes/nullable-analysis ( ※いいページが見つけられませんでした )
 変数に値がセットされているかの分析が機能するパターンが増えた。

#nullable enable

C c = new C();
if (c?.M(out object obj3) == true)
{
    obj3.ToString(); // OK
}

if (c?.M(out object obj4) ?? false)
{
    obj4.ToString(); // OK
}
if (c != null ? c.M(out object obj) : false)
{
    obj.ToString(); // OK
}

public class C
{
    public bool M(out object obj)
    {
        obj = new object();
        return true;
    }
}