2

連鎖変数で null の値を取得しようとしています

3 つのスクリプトを作成しました。レベル 1、レベル 2、レベル 3。レベル 1 にはレベル 2 のパブリック変数があり、レベル 2 にはレベル 3 のパブリック変数があり、レベル 3 にオブジェクト変数を設定します。

Null-Propagation 演算子を使用して、それらを連鎖させ、レベル 3 のオブジェクトの名前を出力しようとしています。

level1 init 関数から level2 のセットアップを意図的にコメントアウトして、エラーを発生させました。

これは期待どおりに機能します。次に、連鎖チェックのどの値が null であるかを判断するために、null 合体演算子を追加しました。これは私が立ち往生したところです。

public class Level1
{
    public Level2 m_level2;

    // Start is called before the first frame update
    void Init()
    {
        //m_level2 = new Level2();

        string sName = m_level2?.m_level3?.m_obj3?.name ?? throw new ArgumentNullException(nameof(m_level2), "variable cannot be null");

        Console.WriteLine("Name: " + sName);
    }
}

私のコンソールでは、エラーが発生しています

「ArgumentNullException: 変数を null にすることはできませんパラメーター名: m_level2」

これは理にかなっていますが、それは「m_level2」をnameof()チェックに入れただけなので、そこに何を入れるかを知る必要があるため、チェーン内の変数がnullであることを認識します。

4

0 に答える 0