TimeSpan.MinValue 的使用示例?为什么有人会在实践中使用它?

Example use of TimeSpan.MinValue? Why would anyone use that in practice?

我正在使用 TimeSpans,并在 MSDN 中找到了 TimeSpan.MinValue。我想知道为什么他们将其直接包含在 class 中,或者更好:如果有 why/when 的 classic 示例,您会想要使用它。 知道值当然很好,但可以查一下。

我想到了减去其他 TimeSpans 之类的东西,但它对我来说真的没有意义。

有什么想法吗?谢谢!!

想到一件事:

static TimeSpan FindMax(params TimeSpan[] intervals) {
    if (intervals.Length == 0)
        throw new ArgumentException("intervals collection is empty");
    var max = TimeSpan.MinValue;
    foreach (var interval in intervals) {
        if (interval > max)
            max = interval;
    }
    return max;
}

TimeSpanstruct,不是 class。这意味着它不能有空值(不将其包装在 System.Nullable 中)。因此,如果将变量实例化为TimeSpan,应该给它什么值?

设计者选择了可能的最小值,但他们没有将其编码为魔法值,而是将其公开为 TimeSpan.MinValue 常量。

我可以给你的一个例子是,它可以用作 class 中 Nullable TimeSpan 属性 的替代方法(TimeSpan 可以为空,通过方式)

并且您在某处显示一些文本 - 这取决于某些东西是 "set"(或不是)。

假设一个 string 显示某事已经持续了多长时间 运行。

使用完整的 属性(带支持字段)来实现:

将初始字段的值设置为 TimeSpan.MinValue,然后您可以使用 public 属性 进行更改。然后,对于您要显示的字符串,使用您最喜欢的 PropertyChanged 事件处理程序(或其他代码)来更新您的视图:

private TimeSpan _lengthOfTime = TimeSpan.MinValue;
public TimeSpan LengthOfTime
{
    get { return _lengthOfTime; }
    set
    {
        _lengthOfTime = value;
        OnPropertyChanged("LengthOfTimeString");
    }
}

public string LengthOfTimeString
{
    get
    {
        if (LengthOfTime == TimeSpan.MinValue)
        {
            return "The length of time has not been set.";
        }
        else
        {
            return LengthOfTime.ToString("YourFavouriteStringFormatHere");
        }
    }
}

然后当您更新 LengthOfTime 属性 时,它将调用 OnPropertyChanged(或您用来更新 UI 的任何内容)到 get LengthOfTimeString 值,然后重新计算并显示在您的视图中。

这只是一个例子;以及您使用它的场景可能会有所不同。

我建议查看 https://msdn.microsoft.com/en-us/library/ms229614(v=vs.100).aspx,它告诉您如何实现 INotifyPropertyChanged;如果您正在考虑在 WPF/XAML/WinRT 中使用绑定(如果您还不知道如何使用)。