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

时间:2016-05-05 16:07:39

标签: c# .net timespan

我正在使用TimeSpans并在MSDN中找到TimeSpan.MinValue。我想知道为什么他们直接在课堂上包含它,或者更好的是:如果有一个经典的例子说明为什么/什么时候你想要使用它。当然,知道这个价值是件好事,但是人们可以看一下。

我想到了减去其他TimeSpans的东西,但它对我来说并没有什么意义。

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:4)

想到一件事:

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;
}

答案 1 :(得分:1)

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

,应该给出什么值

设计师选择了尽可能小的值,但不是将其编码为魔术值,而是将其公开为TimeSpan.MinValue常量。

答案 2 :(得分:1)

我可以给你的一个例子是它可以用作某个类中Nullable TimeSpan属性的替代方法(顺便说一句,TimeSpan是Nullable)

你在某个地方展示了一些文字 - 这取决于某些东西是什么"设置" (或不)。

让我们说string显示某些事情的运行时间。

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

将初始字段的值设置为TimeSpan.MinValue,然后您可以使用公共属性进行更改。然后,对于要显示的字符串,使用您最喜欢的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(或您用来更新用户界面的任何内容)到get LengthOfTimeString值,然后重新计算并显示在您的视图上。

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

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