我有一个对象,该对象具有一个名为NameIndicator的布尔字段(外部合同1)。在我的代码中,我将布尔值“ IsIndicated”设置为可为空。
如何检查null并仅在非null时才赋值?
我目前收到以下代码的编译时错误,因为它明显地将可空字段设置为不可空字段
personDetails.Name= new Name_Format()
{
NameSpecified = true,
NameIndicator = contract.IsIndicated
};
答案 0 :(得分:2)
如果要为null分配一个特定的值,否则要分配一个值,请使用 null合并运算符。
personDetails.Name= new Name_Format()
{
NameSpecified = true,
NameIndicator = contract.IsIndicated ?? true
};
具有与
相同的语义personDetails.Name = new Name_Format()
{
NameSpecified = true,
NameIndicator = contract.IsIndicated == null ? true : contract.IsIndicated.Value
};
除了它当然只调用一次IsIndicated
。
如果您希望运行时为您选择默认值,则可以
personDetails.Name = new Name_Format()
{
NameSpecified = true,
NameIndicator = contract.IsIndicated.GetValueOrDefault()
};
在这种情况下,它将选择“ false”,因为这是布尔值的默认值。
如果该值为null则什么也不希望发生,则可以使用if
语句:
if (contract.IsIndicated != null)
{
personDetails.Name = new Name_Format()
{
NameSpecified = true,
NameIndicator = contract.IsIndicated.Value
}
};