我在下面有以下代码行。是否有一种方法可以检查团队,DivisionTeam,团队,协调员,配置文件,地址和最后一个属性StateRegion是否为null而不是为每个属性执行此操作?
if(team.DivisionTeam.Team.Coordinator.Profile.Address.StateRegion != null)
答案 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();
...
}
}