c# - 无法隐式转换“System.TimeSpan?”具有.HasValue条件的“System.TimeSpan”

标签 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'

我想念的是什么,我浏览过,然后在Google上搜索,所以请不要将其标记为重复项,因为您会看到我已经使用过的条件

最佳答案

这应该工作。使用null-coalescing operator

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

关于c# - 无法隐式转换“System.TimeSpan?”具有.HasValue条件的“System.TimeSpan”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221694/

相关文章:

c# - 从另一个索引器继承文档的语法是什么?

c# - 如何从 Web API 中的默认格式化程序构建自定义格式化程序?

.net - 将日期/时间字符串值转换为 .NET DateTime

c# - Process.TotalProcessorTime超过实际耗时

c# - 你如何使用 log4.net 编写 byte[] 数组

.net - 如何检索任意时刻连接到 IIS 的用户数量?

c# - string.IsNullOrEmpty(string)' 有一些无效参数

c# - 使用 = 符号解析 ConnectionString

图像的 C# .net Core 圆角

c# - 在 .NET/C# 中使用委托(delegate)加速反射 API