.NET缺少方法中的可空类型

时间:2010-09-29 23:40:14

标签: .net nullable

我今天注意到,如果你声明一个可以为空的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()来解决这个问题,但这看起来很糟糕......有更好的方法吗?

2 个答案:

答案 0 :(得分:7)

这是因为您需要致电Nullable<T>.Value以获取实际的DateTime值。

答案 1 :(得分:3)

Nullable<T>不是T,它只包裹T。因此它没有T上定义的成员。如果您想访问T的方法,可以这样做:

if (nullableDT.HasValue)
{
    Console.WriteLine(nullableDT.Value.ToShortTimeString());
    ...
}