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

C# 对DateTime.Parse()正确使用Null条件运算符,c#,C#,我正在尝试使用DateTime.Parse()将字符串转换为DateTime?,但仅当字符串不为空时。我正在尝试使用Null条件运算符 这就是我试图取代的: string maxPermissableEndDate = response.Contract.ReferenceFields.FirstOrDefault(t => t.code == "MAX_EXT_DATE")?.Value; if (!string.IsNullOrEmpty(maxPermissableEndDate)

我正在尝试使用
DateTime.Parse()
将字符串转换为
DateTime?
,但仅当字符串不为空时。我正在尝试使用Null条件运算符

这就是我试图取代的:

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

if (!string.IsNullOrEmpty(maxPermissableEndDate))
{
     contract.MaximumPermissableEndDate = DateTime.Parse(maxPermissableEndDate);
}
当变量maxPermissableEndDate不为null时,如何仅以这种吸引人的方式将MaximumPermissableEndDate赋值给nullable DateTime属性

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

这不使用null coalesce操作符,但是类似这样的东西

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

您可以这样做:

contract.MaximumPermissableEndDate = string.IsNullOrEmpty(maxPermissableEndDate) ?
     contract.MaximumPermissableEndDate 
    : new Nullable<DateTime>(DateTime.Parse(maxPermissableEndDate));
contract.MaximumPermissableEndDate=string.IsNullOrEmpty(maxPermissableEndDate)?
合同。最大允许终止日期
:new Nullable(DateTime.Parse(maxPermissableEndDate));