Правильное использование Null-Conditional Operator с DateTime.Parse ()

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

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

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

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

Как назначить свойство nullTime MaximumPermissableEndDate с нулевым значением таким привлекательным способом, только если переменная maxPermissableEndDate не равна нулю?

Это пример, который я рассматриваю из документации 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));

c#,

1

Ответов: 2


0 принят

Вы можете сделать что-то вроде:

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

2

Это не использует оператор null coalesce, но что-то вроде этого?

DateTime attemptParseDate;
contract.MaximumPermissableEndDate = 
 DateTime.TryParse(maxPermissableEndDate, out attemptParseDate)?
  attemptParseDate : (DateTime?) null;
C #,
Похожие вопросы