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

时间:2012-03-30 11:25:05

标签: c#

是否有任何内容阻止DateTime AddDays()方法在while循环中不运行。我有这么简单的代码;

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永远不会改变,任何人都知道为什么?!

3 个答案:

答案 0 :(得分:11)

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

first_day = first_day.AddDays(1);

答案 1 :(得分:10)

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是不可变的结构。即实例值在创建后无法更改。

答案 2 :(得分:4)

无法更改日期时间,所以请改为。

first_day = first_day.AddDays(1);