-1

我正在尝试使用下面的代码获取最新日期,但它进入无限循环并且在控制台中不显示任何内容,

    public static void sortsortyMyDates()
    {
        int i = 1;
        DateTime[] dtList = new DateTime[20];
        DateTime LatestDate = dtList[1];

        dtList[1] = Convert.ToDateTime("28/05/2013 13:00:00");
        dtList[2] = Convert.ToDateTime("23/04/2013 13:00:00");
        dtList[3] = Convert.ToDateTime("25/03/2013 13:00:00");
        dtList[4] = Convert.ToDateTime("08/04/2013 13:00:00");

        while(i < dtList.Length)
        {
            int result = DateTime.Compare(LatestDate, dtList[i]);

            if (result < 0)
                continue;
            else
                LatestDate = dtList[i];

            ++i;
        }

        Console.WriteLine(LatestDate.ToString());
    }
4

2 回答 2

3

您的循环逻辑有问题:

if (result < 0)
    continue;

如果result < 0那么您不递增i,则循环不会进行。

另外,您的比较是错误的方法。 result < 0将意味着当前测试的日期晚于当前的最大值。您获得01/01/0001输出的原因是因为您当前的代码实际上找到了最早的日期,并且您的大部分数组都未初始化(因此比您的测试值早得多!)。

改用if这个(并else完全删除):

if (result < 0)
    LatestDate = dtList[i];
于 2013-04-09T09:20:15.463 回答
2

ifcontinue被执行,i不再递增,循环也不会终止。

于 2013-04-09T09:19:40.747 回答