防止C#异常并找到更优雅的方法来检查可以为空的值

时间:2018-04-10 12:53:16

标签: c# exception logic conditional

CreatedDate = meta.CreatedDate.HasValue ? meta.CreatedDate.Value.ToShortDateString : null

这行代码抛出异常'条件表达式的类型无法确定,因为方法组和null之间没有隐式转换。'

是否有任何工作方式来进行此检查和/或更优雅(不那么丑陋)的方式?

注意:

myObject = (dynamic)new
{
    CreatedDate = meta.CreatedDate.HasValue ? meta.CreatedDate.Value.ToShortDateString : null
}

2 个答案:

答案 0 :(得分:4)

对于方法调用,您缺少调用大括号()它应该是ToShortDateString(),因为调用我们需要的方法,所以,您的代码行应如下所示:

CreatedDate = meta.CreatedDate.HasValue ? meta.CreatedDate.ToShortDateString() : null ;

但是如果您使用的是C#6,则可以通过空传播运算符执行以下操作:

String CreatedDate = meta.CreatedDate?.ToShortDateString();

或:

String CreatedDate = meta.CreatedDate?.Value.ToShortDateString();

如果你低于C#6,那么试试:

String CreatedDate = meta.CreatedDate.HasValue ? meta.CreatedDate..ToShortDateString() ? null;

答案 1 :(得分:2)

您可以使用空条件运算符:

CreatedDate = meta.CreatedDate?.ToShortDateString();