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