C# 不可达代码C

C# 不可达代码C,c#,winforms,for-loop,unreachable-code,C#,Winforms,For Loop,Unreachable Code,执行一些c循环和if语句。获取for循环上无法访问的代码的突出显示。我不太明白这一点 public bool checkTime() { // Read values back from Json file var serializedList = File.ReadAllText(@filePathTimes); // getting a list of LockTime objects List<

执行一些c循环和if语句。获取for循环上无法访问的代码的突出显示。我不太明白这一点

        public bool checkTime()
    {

        // Read values back from Json file
        var serializedList = File.ReadAllText(@filePathTimes);

        // getting a list of LockTime objects
        List<LockTime> deserializedList = (List<LockTime>)JsonConvert.DeserializeObject(serializedList, typeof(List<LockTime>));

        if (deserializedList.Count != 0)
        {

                // Grab whatever data you want from this list to store somewhere, such as a list of all Start and End integers.
                List<DateTime> intStartList = deserializedList.Select(entry => entry.Start).ToList();
                List<DateTime> intEndList = deserializedList.Select(entry => entry.End).ToList();

                //Then I do a foreach loop to go through every value in the start list and add the same located value to my listOfTimes (the list of LockTime objects with start and end)
                for (int x = 0; x < intStartList.Count; x++)
                {
                    TimeSpan start = new TimeSpan(intStartList[x].Hour, intStartList[x].Minute, intStartList[x].Second);
                    TimeSpan end = new TimeSpan(intEndList[x].Hour, intEndList[x].Minute, intEndList[x].Second);
                    TimeSpan now = DateTime.Now.TimeOfDay;
                    LockTime theTime = new LockTime(intStartList[x], intEndList[x]);
                    _lockTimes.Add(theTime);
                    if((now > start) && (now < end))
                    {
                        return true;
                    }

                        return false;

                }
        }
        return false;
    }

无法访问代码的亮点出现在for循环的x++上。知道这是为什么吗?

那是因为无论发生什么,循环中的代码都将执行返回true;或者返回false


循环不会循环。

这是因为无论发生什么,循环中的代码都将执行返回true;或者返回false


循环不会循环。

原因是您正在呼叫:

return true


在循环中,因此循环一次后它将始终退出。

原因是您正在呼叫:

return true


在循环中循环一次后,它将始终退出。

当循环中没有更多代码可执行时,为什么要发出警告?我猜OP显示了不同的代码。@SriramSakthivel-警告是因为编译器可以看到,由于返回,它将在一个循环后退出,而不管列表的大小。因此,它知道,如果x=10,它仍然只会循环一次,这可能不是预期的操作。@SriramSakthivel-是否需要详细说明/解释?如果OP在一个循环后返回,x++将如何到达?我的观点是正确的。现在我明白了警告是针对x++的谢谢:当循环中没有更多代码可执行时,为什么它应该给出警告?我猜OP显示了不同的代码。@SriramSakthivel-警告是因为编译器可以看到,由于返回,它将在一个循环后退出,而不管列表的大小。因此,它知道,如果x=10,它仍然只会循环一次,这可能不是预期的操作。@SriramSakthivel-是否需要详细说明/解释?如果OP在一个循环后返回,x++将如何到达?我的观点是正确的。现在我明白了警告是针对x++的谢谢: