仅当布尔值不为null时,才将其分配为非null

时间:2018-06-25 22:19:49

标签: c# asp.net .net boolean non-nullable

我有一个对象,该对象具有一个名为NameIndicator的布尔字段(外部合同1)。在我的代码中,我将布尔值“ IsIndicated”设置为可为空。

如何检查null并仅在非null时才赋值?

我目前收到以下代码的编译时错误,因为它明显地将可空字段设置为不可空字段

 personDetails.Name= new Name_Format()
                    {
                        NameSpecified = true,
                        NameIndicator = contract.IsIndicated
                    };

1 个答案:

答案 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
  }
};