为什么这会无限期地运行而不是添加天数
var startDate = new DateTime(year, 1, 1);
var endDate = startDate.AddYears(1);
while (startDate < endDate)
{
startDate.AddDays(1);
}
目标是在一年中的所有日子里度过。
谢谢!
答案 0 :(得分:9)
在.NET中DateTime
是不可变的,因此AddDays
方法只返回新日期,而不是更改startDate
本身。
您应该将此新值分配回startDate
:
startDate = startDate.AddDays(1);
答案 1 :(得分:1)
为了避免此类讨厌的错误(不分配回AddDays(1)
结果),我建议实施for
循环而不是while
:
for (var date = new DateTime(year, 1, 1);
date < new DateTime(year + 1, 1, 1);
date = date.AddDays(1)) {
...
}
答案 2 :(得分:0)
startDate.AddDays(1);
不会更改startDate
,因此startDate < endDate
始终为真。