連鎖変数で 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であることを認識します。