是否可以将 c# 日期时间值设置为特定的无效值(如双精度.NaN)?



我想用不代表有效日期的值初始化 DateTime 值对象,因为我需要区分无效或未设置的日期和任何有效值。对于浮点数,我将使用非数字值,如以下示例所示:

Double value = Double.NaN;

C# 中的 DateTime 对象是否有类似的值?例如,像这样:

DateTime datval = DateTime.Invalid;

最简单的方法是使用可为空的数据类型 -DateTime?。同样的方法适用于double?,如果可以的话,通常比使用 NaN 更好。

如果由于某种原因无法使用DateTime?DateTime.MinValue通常用于表示无效日期。但是,它仍然需要在您的代码中进行特殊处理,就像double.NaN一样。两者都允许对值进行有效的算术运算,并可能导致意外溢出或其他异常。

最后,您始终可以创建自己的帮助程序类。 类似的东西

public class PossiblyEmpty<T> where T : struct
{
private readonly bool hasValue;
private readonly T value;
public PossiblyEmpty(T value)
{
this.value = value;
this.hasValue = true;
}
public PossiblyEmpty() { }
public bool HasValue => hasValue;
public T Value => hasValue ? value : throw new InvalidOperationException("No value");
}

最新更新