是否有任何东西可以阻止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);
}
Run Code Online (Sandbox Code Playgroud)
我逐步完成程序,first_day永远不会改变,任何人都知道为什么?!
Ian*_*Ian 12
原因是DateTime是不可变的,这意味着你不能直接修改它,而是需要创建它的新实例.字符串是另一种行为方式,您可能更习惯.
first_day = first_day.AddDays(1);
Run Code Online (Sandbox Code Playgroud)
Ser*_*kiy 10
DateTime是不可变的.你应该做
first_day = first_day.AddDays(1);
Run Code Online (Sandbox Code Playgroud)
更新:如果您检查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是不可变的结构.即实例值在创建后无法更改.