日期时间和无限循环的问题

时间:2014-07-05 19:59:30

标签: c#

我知道这个问题可能有一个非常明显的答案,但为什么我会使用这段代码获得无限循环? (laterDate1的日期晚于dateTime1,而laterDate2的日期晚于dateTime2)

while (dateTime1.CompareTo(laterDate1) <= 0)
        {
            DateTime dateTime2 = otherDateTime;
            while (dateTime2.CompareTo(laterDate2) <= 0)
            {
                dateTime2.AddDays(1);
            }
            dateTime1.AddDays(1);
        }

提前感谢您的帮助。 (我的大脑今天不工作)

1 个答案:

答案 0 :(得分:7)

dateTime1.AddDays(1);不会修改dateTime1。它返回新的DateTime实例。您必须将其分配回您的变量:

dateTime1 = dateTime1.AddDays(1);

同样适用于dateTime2.AddDays(2)

dateTime2 = dateTime2.AddDays(1);

btw,DateTime是一个结构并且是不可变的,因此每个状态更改方法都会返回新实例,而不是修改您正在调用它的实例。在使用DateTime时,您应该记住这一点。