无法隐式转换'System.TimeSpan?'使用.HasValue条件

时间:2016-12-19 11:34:46

标签: c# .net

我想要实现的是获取从日期时间到当前日期时间的年份。

DateTime zeroTime = new DateTime(1, 1, 1);
DateTime now = DateTime.Now;
TimeSpan span = project.StartDate != null ? now - project.StartDate  : TimeSpan.Zero;

int years = (zeroTime + span).Year - 1;

project.StartDate可以为空,所以我尝试使用project.StartDate.HasValue等条件。我仍然收到错误:

Cannot implicitly convert 'System.TimeSpan?' to 'System.TimeSpan'

我缺少什么,我浏览了SO,并在谷歌搜索,所以请不要将其标记为重复,因为您可以看到我已经使用过条件

2 个答案:

答案 0 :(得分:5)

这应该有效。使用null-coalescing operator

TimeSpan span = (now - project.StartDate) ?? TimeSpan.Zero;

答案 1 :(得分:3)

尝试(你缺少.Value):

TimeSpan span= project.StartDate.HasValue? now-project.StartDate.Value:TimeSpan.Zero;