2

我正在尝试获取链式变量中为空的值

我创建了三个脚本。一级,二级,三级。级别 1 有一个级别 2 的公共变量,级别 2 有级别 3 的公共变量,并在级别 3 中设置对象变量。

使用 Null-Propagation 运算符,我将它们链接在一起,并尝试在 level3 中输出对象的名称。

我特意把level1 init函数中level2的设置注释掉了,导致报错。

这按预期工作。然后,我添加了一个空合并运算符,试图确定我的链式检查中的哪个值为空。这就是我陷入困境的地方。

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:变量不能为空参数名称:m_level2”

这是有道理的,但这只是因为我已将“m_level2”放入 nameof() 检查中,我需要知道在其中放入什么,以便它知道链中哪个变量为空。

4

0 回答 0