添加()时间跨度似乎没有添加它们

Wor*_*gon 0 c# timespan

我有一个函数,通过添加TtimeSpans 来计算总工时.我试图通过网络搜索并找到了一些东西TimeSpan.Add().

以下是我的代码示例:

TimeSpan TotalWorkHours = new TimeSpan(0,0,0);
List<TimeSpan> Interval = new List<TimeSpan>();

Interval.Add(TimeSpan.Parse("04:20:07"));
Interval.Add(TimeSpan.Parse("03:59:49"));

//Having a looping to Add in the Interval and combine the total work hours

for(int i = 0; i < Interval.count; i++)
{
    if(i == 0)
       TotalWorkHours = Interval[i];       
    else
       //This section will always add in "00:00:00"
       TotalWorkHours.Add(Interval[i]);
} 
Run Code Online (Sandbox Code Playgroud)

然而,由此产生的时间跨度是00:00:00.哪里出错了?

Jon*_*eet 7

你正在打电话Add,但根本没有使用结果.Add不会更改值 - 它返回一个新值.你要:

TotalWorkHours = TotalWorkHours.Add(Interval[i]);
Run Code Online (Sandbox Code Playgroud)

或更具惯用性,IMO:

TotalWorkHours += Interval[i];
Run Code Online (Sandbox Code Playgroud)

或者更具有惯用力,在我看来:

// Note the casing of the variable names to follow conventions,
// and the fact that "intervals" is plural because it contains
// more than one interval.   
List<TimeSpan> intervals = ...;
var totalWorkHours = TimeSpan.Zero;
foreach (var interval in intervals)
{
    totalWorkHours += interval;
}
Run Code Online (Sandbox Code Playgroud)

甚至只是使用LINQ聚合:

var totalWorkHours = intervals.Aggregate(TimeSpan.Zero, (x, y) => x + y);
Run Code Online (Sandbox Code Playgroud)