在我的应用中,article.DatePublished是一个可以为空的DateTime字段。现在我有以下代码:
list.Add(article.DatePublished.Ticks);
这里我收到编译错误,因为Ticks属性不适用于可空的DateTimes。
处理此问题的一种方法是:
if (article.DatePublished != null)
list.Add(((DateTime)article.DatePublished).Ticks);
这有效,但这是一个优雅的解决方案吗?或者我们可以让它“更好”吗?
谢谢,
的Vivek
答案 0 :(得分:5)
您需要获得.Value
的{{1}}属性。
DateTime?
您可以使用if (nullableDate != null) // or if (nullableDate.HasValue)
ticks = nullableDate.Value.Ticks;
,这会将空日期标准化为默认值nullableDate.GetValueOrDefault().Ticks
,即DateTime
。
答案 1 :(得分:3)
正如伊卡洛斯所说,我会用:
if (article.DatePublished != null)
{
list.Add(article.DatePublished.Value.Ticks);
}
甚至:
if (article.DatePublished.HasValue)
{
list.Add(article.DatePublished.Value.Ticks);
}
根据您要做的事情,可能是LINQ会为您提供更简单的代码:
var list = articles.Select(article => article.DatePublished)
.Where(date => date != null)
.Select(date => date.Ticks)
.ToList();
答案 2 :(得分:1)
if (article.DatePublished.HasValue)
{
list.Add(article.DatePublished.Value.Ticks);
}
答案 3 :(得分:0)
如果您总是想要添加一个值,包括默认值,如果DatePublished为null,您可以执行类似
的操作var date = article.DatePublished ?? new DateTime(whatever);
list.Add(date.Ticks);