AddDays()在while循环中不起作用

本文关键字:循环 不起作用 while AddDays | 更新日期: 2023-09-27 18:29:26

是否有任何东西可以阻止不在while循环中运行的DateTime AddDays()方法。我有一个简单的代码;

DateTime last_day = monthCalendar2.SelectionRange.End;
DateTime first_day = new DateTime(year, month, day);
//Insert dates into vector
while (first_day != last_day)
{
  dates.Add(first_day);
  first_day.AddDays(1);
}

我完成了这个程序,第一天永远不会改变,有人知道为什么吗?!

AddDays()在while循环中不起作用

原因是DateTime是不可变的,这意味着你不能直接修改它,而是需要创建一个新的实例。字符串是另一种行为方式,你可能更习惯。

first_day = first_day.AddDays(1);

DateTime是不可变的。你应该做

first_day = first_day.AddDays(1);

更新:如果选中DateTime.AddDays方法描述:Returns a new System.DateTime that adds the specified number of days to the value of this instance.与DateTime结构上的所有操作(如Add、Substract、AddHours等)相关,则任何计算都不会修改结构的值。相反,计算返回一个新的DateTime结构,其值是计算的结果。这是因为DateTime是不可变的结构。即实例值在创建后不能更改。

DateTime不能更改,所以改为更改。

first_day = first_day.AddDays(1);