否则忽略if和else语句

时间:2017-11-23 21:53:21

标签: c# winforms date metadata

我正在使用Windows窗体应用程序,该应用程序需要按照其元数据中的日期搜索图片。它比较日期在2个选定日期之间或1个确切日期。这是代码:

private void searchByDate(Tag tag, String pic)
    {
        if (tag.ToString().Contains("Date/Time Original"))
        {
            var regex = new Regex(@"\b\d{4}\:\d{2}\:\d{2}\b");
            Match m = regex.Match(tag.ToString());
            DateTime dateFound;
            DateTime.TryParseExact(m.ToString(), "yyyy:MM:dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateFound);

            Console.WriteLine(dateFound);

            if (checkEnd && dateFound != null) if (dateFound >= date && dateFound <= dateEnd) Console.WriteLine("Date found between"); //foundPictures.Add(pic);
            else if (dateFound != null) Console.WriteLine("single date found");//foundPictures.Add(pic);
            else Console.WriteLine("No dates found");
        }
    }

if语句工作正常,但是当checkEnd(这是一个用于在两个日期之间查找的复选框)没有被检查时,其他语句完全被忽略,我只是找不到原因。这是日期之间的控制台输出:

16.09.2017 00:00:00
Date found between
16.09.2017 00:00:00
Date found between
07.12.2016 00:00:00
Date found between

搜索确切日期(16.09.2017)

16.09.2017 00:00:00
16.09.2017 00:00:00
07.12.2016 00:00:00

随机日期(01.01.1753)

16.09.2017 00:00:00
16.09.2017 00:00:00
07.12.2016 00:00:00

如您所见,给定的数据始终相同。我试图把另一个Console.WriteLine();在这些陈述后,它表明了。没有例外。

编辑为了澄清事情,我知道if语句中不需要括号,但不知道只有单个指令就是这种情况。我虽然是基于这条线。缺乏经验,没有人教我,没有足够的研究让我问这个愚蠢的问题。

1 个答案:

答案 0 :(得分:2)

如果格式化代码,您会看到如果checkEnd为假,if / else编码的方式将永远不会执行任何操作。

if (checkEnd && dateFound != null)
{
    if (dateFound >= date && dateFound <= dateEnd)
    {
        Console.WriteLine("Date found between"); //foundPictures.Add(pic);
    }
    else if (dateFound != null)
    {
        Console.WriteLine("single date found");//foundPictures.Add(pic);
    }
    else
    {
        Console.WriteLine("No dates found");
    }
}