我正在尝试使用下面的代码获取最新日期,但它会进入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());
}
答案 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
不再递增,循环不会终止。