如何使用过去30天的日期填充下拉列表

Mr.*_*bot 0 c# asp.net datetime out-of-memory

我正在尝试使用过去30个日期填充下拉列表,我收到错误:

mscorlib.dll中出现"System.OutOfMemoryException"类型的异常,但未在用户代码中处理

这是我填写下拉列表的功能:

public void FillDates(int NumDaysBack)
{
    for (DateTime d = DateTime.Now.AddDays(-NumDaysBack); d < DateTime.Now; d.AddDays(1))
    {
        ddMiscDateList.Items.Add(d.ToShortDateString());
    }
    ddMiscDateList.Items.Add("Other");
}
Run Code Online (Sandbox Code Playgroud)

我在加载时调用此函数并使用30表示NumDaysBack.如何更有效地写这个以便不收到此错误?

Art*_*yan 7

DateTime.AddDays()返回DateTime的新实例.它不会改变d变量.因此,你有无限的循环.你可以解决它

public void FillDates(int NumDaysBack)
{
    for (DateTime d = DateTime.Now.AddDays(-NumDaysBack); d < DateTime.Now; d = d.AddDays(1))
    {
        ddMiscDateList.Items.Add(d.ToShortDateString());
    }
    ddMiscDateList.Items.Add("Other");
}
Run Code Online (Sandbox Code Playgroud)