在C#中检查Null的所有子属性

时间:2012-07-12 06:24:35

标签: c# null

我在下面有以下代码行。是否有一种方法可以检查团队,DivisionTeam,团队,协调员,配置文件,地址和最后一个属性StateRegion是否为null而不是为每个属性执行此操作?

if(team.DivisionTeam.Team.Coordinator.Profile.Address.StateRegion != null)

5 个答案:

答案 0 :(得分:2)

目前在C#中,你不能,你必须单独检查每个属性是否为null。

可能你在寻找“。?”运算符,但它不在C#4.0中,请查看这篇文章和Eric Lippert的回复:Deep null checking, is there a better way?

答案 1 :(得分:1)

您应该查看以下文章:Chained null checks and the Maybe monad。这是IMO,实际上“做”你所要求的最简洁的方式。

而且,不,C#中没有内置的直接方式。

答案 2 :(得分:1)

在C#6.0中,您只需一个字符串即可完成:

var something = team?.DivisionTeam?.Team?.Coordinator?.Profile?.Address?.StateRegion;

请查看此文章以获取进一步阅读:null-conditional operator

答案 3 :(得分:0)

这是一个示例

private bool IsValidTeam(Team team)
{ 
    bool result = false;
    if (team != null)
        if (team.DivisionTeam != null)
            if (team.DivisionTeam.Team != null)
                if (team.DivisionTeam.Team.Coordinator != null)
                    if (team.DivisionTeam.Team.Coordinator.Profile != null)
                        if (team.DivisionTeam.Team.Coordinator.Profile.Address != null)
                            if (team.DivisionTeam.Team.Coordinator.Profile.Address.StateRegion != null)
                                result = true;
    return result;
}

答案 4 :(得分:0)

在这里查看我的答案:

https://stackoverflow.com/a/34086283/4711853

你可以简单地编写一个小扩展方法,它可以让你像这样编写链式lambda:

private void productComboBox_SelectedValueChanged(object sender, EventArgs e)
{
    //productIdLabel.Text = productComboBox.SelectedValue.ToString();
    DataRowView selectedRow = comboBox1.SelectedValue as DataRowView;

    if (selectedRow != null)
    {
        productIdLabel.Text    = selectedRow["productID"].ToString();
        productPriceLabel.Text = selectedRow["productPrice"].ToString();
        ...
    }
}