我今天注意到,如果你声明一个可以为空的DateTime对象,你就不会获得与拥有标准DateTime对象时相同的函数集。
例如:
DateTime? nullableDT = DateTime.Now;
DateTime regularDT = DateTime.Now;
在上面的代码中,nullableDT不能使用以下任何功能:
ToFileTime
ToFileTimeUtc
ToLocalTime
ToLongDateString
ToLongTimeString
ToOADate
ToShortDateString
ToShortTimeString
ToString(IFormatProvider)
ToString(String)
ToString(String, IFormatProvider)
ToUniversalTime
这是短名单,还有更多方法不可用。
为什么.NET会像这样?我通过在我的可以约会的日期投掷Convert.ToDateTime()
来解决这个问题,但这看起来很糟糕......有更好的方法吗?
答案 0 :(得分:7)
这是因为您需要致电Nullable<T>.Value
以获取实际的DateTime
值。
答案 1 :(得分:3)
Nullable<T>
不是T
,它只包裹T
。因此它没有T
上定义的成员。如果您想访问T
的方法,可以这样做:
if (nullableDT.HasValue)
{
Console.WriteLine(nullableDT.Value.ToShortTimeString());
...
}