我有这个 while 循环来获取下一个工作日,不包括节假日和星期日。 但它是通过添加 1 天来计算的。我希望用户给出该天数。我从下面的 TextBox (TboxIzin) 获得该输入。
如何执行 while 循环来计算给定的次数?
int i = 1;
int sayi;
IzinIslem i1 = new IzinIslem();
int.TryParse(i1.TboxIzin.Text, out sayi);
public static DateTime GetNextWeekDay(DateTime date,
IList<Holiday> holidays, IList<DayOfWeek> weekendDays)
{
int i = 1;
int sayi;
IzinIslem i1 = new IzinIslem();
int.TryParse(i1.TboxIzin.Text, out sayi);
// always start with tomorrow, and truncate time to be safe
date = date.Date.AddDays(1);
// calculate holidays for both this year and next year
var holidayDates = holidays.Select(x => x.GetDate(date.Year))
.Union(holidays.Select(x => x.GetDate(date.Year + 1)))
.Where(x => x != null)
.Select(x => x.Value)
.OrderBy(x => x).ToArray();
// increment to get working day
while (true)
{
if (weekendDays.Contains(date.DayOfWeek) ||
holidayDates.Contains(date))
date = date.AddDays(1);
else
return date;
}
}
我得到并非所有代码路径都返回一个值
当我尝试嵌套 while 循环时出错。
最佳答案
while 是一个条件循环。在这里,您在子句中放置了一个非条件,然后立即跟进了一个条件。将条件放在 while 子句中:
while(weekendDays.Contains(date.DayOfWeek) || holidayDates.Contains(date)) {
date = date.AddDays(1);
}
return date;
您收到错误的实际原因是编译器无法预测您的 if 条件是否会解析为 false。如果没有,那么您的函数永远不会返回。
使用修改后的 while 循环,这可能仍然会发生,但它会导致无限循环,如果你那样搬起石头砸自己的脚,编译器是没问题的。
关于c# - 如何执行给定次数的while循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871165/