Правильное использование нулевого условного оператора с DateTime.Parse()

#c#

#c#

Вопрос:

Я пытаюсь преобразовать строку в DateTime? using DateTime.Parse() , но только тогда, когда строка не равна null. Я пытаюсь использовать нулевой условный оператор

Это то, что я пытаюсь заменить:

 string maxPermissableEndDate = response.Contract.ReferenceFields.FirstOrDefault(t => t.code == "MAX_EXT_DATE")?.Value;

if (!string.IsNullOrEmpty(maxPermissableEndDate))
{
     contract.MaximumPermissableEndDate = DateTime.Parse(maxPermissableEndDate);
}
 

Как я могу присвоить обнуляемому свойству даты и времени MaximumPermissableEndDate таким привлекательным способом, только если переменная maxPermissableEndDate не равна null?

Это пример, который я рассматриваю из документации C # 6.0:

 string result = value;

if (value != null) // Skip empty string check for elucidation
{
  result = value.Substring(0, Math.Min(value.Length, length));
}
 

С альтернативой:

 value?.Substring(0, Math.Min(value.Length, length));
 

Ответ №1:

При этом не используется оператор объединения null, но что-то вроде этого?

 DateTime attemptParseDate;
contract.MaximumPermissableEndDate = 
 DateTime.TryParse(maxPermissableEndDate, out attemptParseDate)?
  attemptParseDate : (DateTime?) null;
 

Ответ №2:

Вы можете сделать это примерно так:

 contract.MaximumPermissableEndDate = string.IsNullOrEmpty(maxPermissableEndDate) ?
     contract.MaximumPermissableEndDate 
    : new Nullable<DateTime>(DateTime.Parse(maxPermissableEndDate));