代码之家  ›  专栏  ›  技术社区  ›  Abe Miessler

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

  •  2
  • Abe Miessler  · 技术社区  · 14 年前

    我今天注意到,如果您声明了一个可为null的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 回复  |  直到 14 年前
        1
  •  7
  •   Igor Zevaka    14 年前

    那是因为你需要打电话 Nullable<T>.Value 得到实际的 DateTime 价值观。

        2
  •  3
  •   Thomas Levesque    14 年前

    A Nullable<T> T ,它只是包装了一个 T型 T型 . 如果要访问 T型 ,您可以这样做:

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