Присвойте ненулевое значение в логическом значении, только если оно не равно нулю

У меня есть объект, который имеет логическое поле с именем NameIndicator (внешний контракт один). В моем коде я сделал мой логический "IsIndicated" как обнуляемый.

Как проверить наличие нуля и назначить значение, только если оно не равно нулю?

В настоящее время я получаю ошибку времени компиляции с приведенным ниже кодом, поскольку очевидно, что это поле может быть обнуляемым и не обнуляемым

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

1 ответ

Решение

Если вы хотите присвоить конкретное значение в случае нулевого значения, а в противном случае значение, вы используете оператор объединения нулей.

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()
};

В этом случае он выберет "ложь", так как это значение по умолчанию для логических значений.

Если вы хотите, чтобы вообще ничего не происходило, если значение равно нулю, вы можете использовать if заявление:

if (contract.IsIndicated != null)
{
  personDetails.Name = new Name_Format()
  {
    NameSpecified = true,
    NameIndicator = contract.IsIndicated.Value
  }
};
Другие вопросы по тегам