#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));