循环中的歧义?

时间:2011-11-01 19:35:41

标签: c# datetime

我得到的错误是“System.ArgumentOutOfRangeException未处理”。它要求介于1和12之间。但是看看调试器中的变量是否等于1,以及Debug.Writeline。

    int month, year, total;
    total = 0;
    DateTime dayToFind;

    for (year = 1001; year < 1201; year++){
        for (month = 1; month < 12; month++){
            dayToFind = new DateTime(year, month, DateTime.DaysInMonth(month, year));
            // The error points at the last occurance of month above.
            total = (dayToFind.DayOfWeek == DayOfWeek.Monday) ? 1 : 0;
        }

    }

2 个答案:

答案 0 :(得分:8)

您向后拨打DateTime.DaysInMonth()电话。将其更改为:

DateTime.DaysInMonth(year, month)

当您将year变量放在month的位置时,它大于它的最大值(大于12),从而产生ArgumentOutOfRangeException

DateTime.DaysInMonth()

答案 1 :(得分:2)

您颠倒了DaysInMonth方法的参数。年首先。