使用DateTime.Parse()正确使用Null条件运算符

时间:2016-10-14 14:25:18

标签: c#

我正在尝试使用DateTime?将字符串转换为DateTime.Parse(),但仅限于字符串不为空时。我试图使用 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);
}

当变量maxPermissableEndDate不为null时,如何以这种有吸引力的方式分配可空的DateTime属性MaximumPermissableEndDate?

这是我从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));

2 个答案:

答案 0 :(得分:2)

这不使用null coalesce运算符,但是这样吗?

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

答案 1 :(得分:0)

你可以这样做:

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