C# AddDays()在while循环中不工作

C# AddDays()在while循环中不工作,c#,C#,是否有任何东西可以停止不在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); f

是否有任何东西可以停止不在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);
}

我一步一步地完成这个计划,第一天永远不会改变,有人知道为什么吗

日期时间是不可变的。你应该这样做

first_day = first_day.AddDays(1);
更新:
如果选中方法说明:
将返回一个新的System.DateTime,将指定天数添加到此实例的值。
与DateTime结构上的所有操作(如添加、减法、添加小时等)相关-任何计算都不会修改结构的值。相反,计算返回一个新的DateTime结构,其值是计算的结果。这是因为DateTime是不可变的结构。例如,实例值在创建后不能更改。

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

first_day = first_day.AddDays(1);

日期时间无法更改,请改为更改

first_day = first_day.AddDays(1);

感谢您将代码编辑成代码的样子,我倾向于忘记正确操作:/@DanielHilgarth:谢谢,但更快的答案几乎总是比更具描述性的答案更受欢迎。这就是为什么我首先发布一个简短的答案,然后使其更具描述性;-)评分较高的答案位于顶部,大多数人都不会看得更远。@DanielHilgarth:的确-我比第一个答案差10秒左右,但是我的答案添加了太多的基本细节。。。傻!更像是24秒。到那时,他的答案已经得到了两三张赞成票,结果是:-)是的,因为我的答案中有关于这个问题的所有数据。它说明了问题发生的原因(不可变结构)和解决问题的方法。很少搜索“不可变”可以解释它的含义。顺便说一句,您的答案没有提供其他不可变示例,也没有关于如何实现不可变的代码:)