C# 如何在给定次数的情况下执行while循环?

C# 如何在给定次数的情况下执行while循环?,c#,winforms,while-loop,C#,Winforms,While Loop,我有这个while循环来获得下一个工作日,不包括节假日和周日。 但它的计算方法是加上1天。我希望用户给出一天的天数。我从下面的文本框TboxIzin中获取输入 如何执行while循环来进行给定次数的计算 int i = 1; int sayi; IzinIslem i1 = new IzinIslem(); int.TryParse(i1.TboxIzin.Text, out sayi); 我得到的不是所有代码路径都返回

我有这个while循环来获得下一个工作日,不包括节假日和周日。 但它的计算方法是加上1天。我希望用户给出一天的天数。我从下面的文本框TboxIzin中获取输入

如何执行while循环来进行给定次数的计算


         int i = 1;
         int sayi;
         IzinIslem i1 = new IzinIslem();
         int.TryParse(i1.TboxIzin.Text, out sayi);
我得到的不是所有代码路径都返回一个值 尝试嵌套while循环时出错。

您可以更改else子句以中断循环。然后从循环中返回

        while (true)
        {
            if (weekendDays.Contains(date.DayOfWeek) || 
                      holidayDates.Contains(date))
                date = date.AddDays(1);
            else
                break;
        }
        return date;
您可以更改else子句以中断循环。然后从循环中返回

        while (true)
        {
            if (weekendDays.Contains(date.DayOfWeek) || 
                      holidayDates.Contains(date))
                date = date.AddDays(1);
            else
                break;
        }
        return date;

while是一个条件循环。在这里,您在条款中加入了一个非条件,并立即添加一个条件。将条件放入while子句中:

while(weekendDays.Contains(date.DayOfWeek) || holidayDates.Contains(date)) {
    date = date.AddDays(1);
}

return date;
出现错误的实际原因是编译器无法预测if条件是否会解析为false。如果没有,则函数永远不会返回


对于修改后的while循环,这种情况可能仍然会发生,但它会导致无限循环,如果您以这种方式攻击自己,编译器就可以了。

while是一个条件循环。在这里,您在条款中加入了一个非条件,并立即添加一个条件。将条件放入while子句中:

while(weekendDays.Contains(date.DayOfWeek) || holidayDates.Contains(date)) {
    date = date.AddDays(1);
}

return date;
出现错误的实际原因是编译器无法预测if条件是否会解析为false。如果没有,则函数永远不会返回


对于修改后的while循环,这种情况可能仍然会发生,但它会导致无限循环,如果你用这种方式攻击自己,编译器也会很好。

让我们在GetNextWeekDay中获取所有UI的rif,如int.TryParsei1.TboxIzin.Text,out sayi;:

或者,如果您更喜欢Linq,可以将循环重写为

return Enumerable
  .Range(1, 1000)
  .Select(day => date.Date.AddDays(day))
  .TakeWhile(item => item.Year - date.Year <= 1)
  .First(item => !wends.Contains(item.DayOfWeek) && !hds.Contains(item));

让我们在GetNextWeekDay中获取所有UI的rif,如int.TryParsei1.TboxIzin.Text,out sayi;:

或者,如果您更喜欢Linq,可以将循环重写为

return Enumerable
  .Range(1, 1000)
  .Select(day => date.Date.AddDays(day))
  .TakeWhile(item => item.Year - date.Year <= 1)
  .First(item => !wends.Contains(item.DayOfWeek) && !hds.Contains(item));

考虑使用而不是使用。并确保在for/while.for之后返回;weekendDays.Containsdate.DayOfWeek | | holidayDates.Containsdate;日期=date.AddDays1;然后返回日期;错误是因为在while循环之后没有包含return语句。这可能看起来是一个永远不会执行的地方,但也可能是在出现异常的情况下。如果您可以提前计算重复次数,请使用。如果您不知道将有多少,请使用while。@DmitryBychenko以及如何处理输入?。在我的代码中,i =计数,Sayi=从TyBox输入的数字。考虑使用而不是在使用。并确保在for/while.for之后返回;weekendDays.Containsdate.DayOfWeek | | holidayDates.Containsdate;日期=date.AddDays1;然后返回日期;错误是因为在while循环之后没有包含return语句。这可能看起来是一个永远不会执行的地方,但也可能是在出现异常的情况下。如果您可以提前计算重复次数,请使用。如果您不知道将有多少,请使用while。@DmitryBychenko以及如何处理输入?。在我的代码中,i=计数,sayi=从文本框输入数字。