我正在尝试使用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));
答案 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));