C# 中途无限循环

C# 中途无限循环,c#,.net,while-loop,infinite-loop,C#,.net,While Loop,Infinite Loop,为什么这是无限期运行,而不是增加天 var startDate = new DateTime(year, 1, 1); var endDate = startDate.AddYears(1); while (startDate < endDate) { startDate.AddDays(1); } 目标是循环一年中的所有日子 谢谢 在.NET DateTime中是不可变的,所以AddDays方法只返回新的日期,而不更改startDate本身 您应将此新值重新分配给startD

为什么这是无限期运行,而不是增加天

var startDate = new DateTime(year, 1, 1);
var endDate = startDate.AddYears(1);

while (startDate < endDate)
{
    startDate.AddDays(1);
}
目标是循环一年中的所有日子

谢谢

在.NET DateTime中是不可变的,所以AddDays方法只返回新的日期,而不更改startDate本身

您应将此新值重新分配给startDate:

在.NET中,DateTime是不可变的,所以AddDays方法只返回新的日期,而不更改startDate本身

您应将此新值重新分配给startDate:

startDate.AddDays1;不会更改startDate,因此startDatestartDate.AddDays1;不更改startDate,因此startDate为了避免此类讨厌的错误,不分配回AddDays1结果,我建议实现for循环,而不是while:

为了避免这种讨厌的错误,不分配回AddDays1结果,我建议实现for循环,而不是while:


旁注:对于循环,而不是while looks,IMHO,更自然:对于var date=new DateTimeyear,1,1;日期<新日期时间年+1,1,1;date=date.AddDays1{…}侧注:对于循环而不是while looks,IMHO,更自然:对于var date=new DateTimeyear,1,1;日期<新日期时间年+1,1,1;date=date.AddDays1{…}有点离题。但是.AddDays1方法是否涵盖闰年?当然是这样。您可以很容易地检查它:var date1=new DateTime2016,2,28.AddDays1;var date2=新的日期时间2015,2,28.AddDays1;有点离题。但是.AddDays1方法是否涵盖闰年?当然是这样。您可以很容易地检查它:var date1=new DateTime2016,2,28.AddDays1;var date2=新的日期时间2015,2,28.AddDays1;最后我做了这个+1我最终做了这件事+1.
startDate = startDate.AddDays(1);
  for (var date = new DateTime(year, 1, 1); 
           date < new DateTime(year + 1, 1, 1); 
           date = date.AddDays(1)) {
    ...
  }