我有一个函数,通过添加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.哪里出错了?
你正在打电话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)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |