我知道这个问题可能有一个明显的答案,但为什么我会用这个代码得到一个无限循环?(laterDate1的日期晚于dateTime1,laterDate2的日期晚于dateTime2)
while (dateTime1.CompareTo(laterDate1) <= 0)
{
DateTime dateTime2 = otherDateTime;
while (dateTime2.CompareTo(laterDate2) <= 0)
{
dateTime2.AddDays(1);
}
dateTime1.AddDays(1);
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.(我的大脑今天不工作)
dateTime1.AddDays(1);不修改dateTime1.它返回新DateTime实例.您必须将其分配回您的变量:
dateTime1 = dateTime1.AddDays(1);
Run Code Online (Sandbox Code Playgroud)
这同样适用于dateTime2.AddDays(2):
dateTime2 = dateTime2.AddDays(1);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,DateTime是一个结构并且是不可变的,所以每个状态改变方法都返回新的实例,而不是修改你正在调用它的实例.在使用时你应该记住这一点DateTime.