Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TimeSpan.MinValue的示例使用?为什么有人会在实践中使用它?_C#_.net_Timespan - Fatal编程技术网

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

C# TimeSpan.MinValue的示例使用?为什么有人会在实践中使用它?,c#,.net,timespan,C#,.net,Timespan,我正在使用TimeSpans,并在MSDN中找到了大约。我想知道为什么他们会直接在课堂上使用它,或者更好:如果有一个经典的例子说明为什么/什么时候你会想使用它。当然知道它的价值是好的,但是你可以查一下 我想到了一些东西,比如减去其他时间跨度,但这对我来说真的没有意义 有什么想法吗?谢谢 我想到一件事: static TimeSpan FindMax(params TimeSpan[] intervals) { if (intervals.Length == 0) thro

我正在使用TimeSpans,并在MSDN中找到了大约。我想知道为什么他们会直接在课堂上使用它,或者更好:如果有一个经典的例子说明为什么/什么时候你会想使用它。当然知道它的价值是好的,但是你可以查一下

我想到了一些东西,比如减去其他时间跨度,但这对我来说真的没有意义


有什么想法吗?谢谢

我想到一件事:

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

我想到一件事:

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

TimeSpan
是一个
struct
,而不是
。这意味着它不能有空值(不将其包装为空值)。因此,如果将变量实例化为
TimeSpan
,那么应该给出什么值


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

TimeSpan
是一个
结构,而不是
类。这意味着它不能有空值(不将其包装为空值)。因此,如果将变量实例化为
TimeSpan
,那么应该给出什么值


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

我可以给您举一个例子,它可以作为类中
可为null的
TimeSpan属性的替代(
TimeSpan
可以为空)

你在某个地方显示了一些文本——这取决于某些东西是否被“设置”

让我们假设一个
字符串
,它显示某个东西已经运行了多长时间

使用完整属性(带支持字段)可实现以下目的:

将初始字段的值设置为
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
(或用于更新UI的任何内容)以
获取
LengthOfTimeString
值,然后重新计算并显示在视图上

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


如果您正在考虑在WPF/XAML/WinRT中使用绑定(如果您还不知道如何使用),我建议看一看,它告诉您如何实现INotifyPropertyChanged;

我可以给您举一个例子,它可以作为类中
可为null的
TimeSpan属性的替代方法(
TimeSpan
可以为空)

你在某个地方显示了一些文本——这取决于某些东西是否被“设置”

让我们假设一个
字符串
,它显示某个东西已经运行了多长时间

使用完整属性(带支持字段)可实现以下目的:

将初始字段的值设置为
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
(或用于更新UI的任何内容)以
获取
LengthOfTimeString
值,然后重新计算并显示在视图上

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



如果您正在考虑在WPF/XAML/WinRT中使用绑定(如果您还不知道如何实现),我建议看一下,它告诉您如何实现INotifyPropertyChanged.

两个词:代码可读性。为什么减去时间跨度对您来说没有意义?十分钟减去七分钟等于三分钟;这些都是时间跨度。@EricLippert不是减去时间跨度,而是从minvalue中减去时间跨度。您不能从minvalue中减去正时间跨度。它已经是最小的值。两个词:代码可读性。为什么减去时间跨度对您来说没有意义?十分钟减去七分钟等于三分钟;这些都是时间跨度。@EricLippert不是减去时间跨度,而是从minvalue中减去时间跨度。您不能从minvalue中减去正时间跨度。它已经是最小的值。虽然这种用法很常见,但它是b广告实践。如果你想指出某个东西未设置,请创建一个可为null的timespan,并将其设置为null。我同意;在可能的情况下创建一个
可为null的
timespan
属性。然而,最初的问题是关于
timespan.MinValue
可以用于什么的示例。我认为不好的实践是使用null,因为你总是冒着“十亿美元的错误”的风险,只有例外情况会有所不同。尽管这种用法很常见,但这是一种不好的做法。如果您想指示某些内容未设置,请创建一个可为null的timespan,并将其设置为null。我同意;在可能的情况下创建一个
可为null的
timespan
属性。然而,最初的问题是关于
timespan.MinV的示例value
可以用于。我认为不好的做法是使用null,因为您总是冒着“十亿美元错误”的风险,只有例外情况不同此答案是错误的。您将MinValue与零混淆。
struct
不能声明为
const
。它是
静态只读的。
此值不是通过选择,而是通过设计。此字段的值等于Int64.MinValue(负9223372036854775808)滴答声。这是您可以存储的最大值(或者应该说是最小值),而不会下溢
int64
。这个答案是错误的。您将最小值与零混淆。
struct
不能声明为
const
。它是
st