C# else if和else语句被忽略

C# else if和else语句被忽略,c#,winforms,date,metadata,C#,Winforms,Date,Metadata,我正在开发一个Windows窗体应用程序,它需要按图片元数据中拍摄的日期搜索图片。当日期在两个选定日期之间或在一个确切日期上时,它会进行比较。代码如下: private void searchByDate(Tag tag, String pic) { if (tag.ToString().Contains("Date/Time Original")) { var regex = new Regex(@"\b\d{4}\:\d{2}\

我正在开发一个Windows窗体应用程序,它需要按图片元数据中拍摄的日期搜索图片。当日期在两个选定日期之间或在一个确切日期上时,它会进行比较。代码如下:

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");
        }
    }
查询准确日期(2017年9月16日)

以及随机日期(1753年1月1日)

正如您所看到的,给定的数据总是相同的。我试着放另一个控制台;在这些陈述之后,它被展示出来了。没有例外


编辑:为了澄清问题,我知道if语句中不需要大括号,但我不知道只有一条指令需要大括号。我以为这是根据台词写的。缺乏经验,没有人教我,也没有足够的研究让我问了这个愚蠢的问题。

如果你格式化你的代码,你会发现如果
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");
    }
}
if(checkEnd&&dateFound!=null)
{

if(dateFound>=date&&dateFound尝试格式化代码,每行一个
if
,并使用括号。这可能有助于您了解发生了什么。我认为步骤调试会显示代码没有达到预期(或希望)的行或语句编辑:请不要更改OPs代码的缩进。问题与缩进有关。@OnStandBy我会阅读如何嵌套if-else语句,并学习如何格式化和理解使用
{}
@MethodMan时的代码块。我知道这一点,但我认为括号在这种情况下是隐式的:if()“{”if()//做点什么;“}”。但是我会听从你的建议,因为我可能会错过一些细节。注意:永远不要把if语句放在没有括号的if语句中。
16.09.2017 00:00:00
16.09.2017 00:00:00
07.12.2016 00:00:00
16.09.2017 00:00:00
16.09.2017 00:00:00
07.12.2016 00:00:00
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");
    }
}