.NET中的可空类型缺少方法
我今天注意到,如果您声明了一个可为空的DateTime对象,您将无法获得与使用标准DateTime对象时相同的函数集 例如:.NET中的可空类型缺少方法,.net,nullable,.net,Nullable,我今天注意到,如果您声明了一个可为空的DateTime对象,您将无法获得与使用标准DateTime对象时相同的函数集 例如: DateTime? nullableDT = DateTime.Now; DateTime regularDT = DateTime.Now; 在上面的代码中,nullableDT不能使用以下任何函数: ToFileTime ToFileTimeUtc ToLocalTime ToLongDateString ToLongTimeString ToOADate ToSh
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()
来解决这个问题,但这似乎很难。。。有更好的方法吗?那是因为需要调用以获取实际的日期时间值。可为空的不是t
,它只是包装了t
。因此它没有在t
上定义成员。如果要访问T
的方法,可以执行以下操作:
if (nullableDT.HasValue)
{
Console.WriteLine(nullableDT.Value.ToShortTimeString());
...
}
您也可以考虑使用<代码> nulLab.GeValueOrrDebug()/Cyto>,如果<代码> HasValue/Cuth>是false,则不会引发无效操作异常。