这段代码有什么问题(.net 2.0)

时间:2013-04-09 09:12:11

标签: c# .net web-services .net-2.0

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

    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());
    }

2 个答案:

答案 0 :(得分:3)

您的循环逻辑存在问题:

if (result < 0)
    continue;

如果result < 0,则不会增加i,因此循环不会进展。

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

转而将if切换为此(并完全删除else):

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

答案 1 :(得分:2)

如果执行continue,则i不再递增,循环不会终止。