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

use*_*362 0 c#

我知道这个问题可能有一个明显的答案,但为什么我会用这个代码得到一个无限循环?(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)

在此先感谢您的帮助.(我的大脑今天不工作)

Mar*_*zek 7

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.