代码之家  ›  专栏  ›  技术社区  ›  Jay

Net中的DateTime/bool和Null值

  •  1
  • Jay  · 技术社区  · 15 年前

    利用.Net,我从一个旧类继承,该类的构造函数中包含DateTime和bool参数。这些值是从SQL数据库中提取的,在SQL数据库中,这些值可以为null。当我填充类并调用基构造函数时,这会失败,因为DateTime和bool在.Net中不能有空值。

    我讨厌这个想法,但是,我想过使用a属性将null转换为虚拟日期,然后再返回,但是无法确定谁在调用该属性,因此我不知道何时从get返回null或虚拟日期。

    3 回复  |  直到 15 年前
        1
  •  3
  •   dcp    15 年前

    如果不能使用DateTime,我们通常会使用DateTime.MinValue来处理这类问题?在旧代码中。

        2
  •  1
  •   Sam Harwell    15 年前

    你可以使用 null coalescing operator 要使用“当前值或默认值(如果缺少)”,如另一个答案中所述,默认日期应为sentinal,例如 DateTime.MinValue

    private static readonly DateTime DefaultDate = ...;
    
    ...
    
    DateTime? optionalDate = ...;
    DateTime date = optionalDate ?? DefaultDate;
    
        3
  •  0
  •   Charles Bretana    15 年前

    带有datetime的旧类可以接受任何datetime,因此任何值都可以工作(但我建议使用DateTime.MinValue(正如其他人所建议的)。

    您可能更关心(正确地)使用旧类实例的客户机代码在实例中具有表示null的“神奇”值时的行为。