【发布时间】:2020-01-12 05:35:49
【问题描述】:
我有这个 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;
}
}
我得到not all code paths return a value
当我尝试嵌套 while 循环时出错。
【问题讨论】:
-
考虑使用
for而不是while。并确保return在for/while之后有一个while。 -
for (; weekendDays.Contains(date.DayOfWeek) || holidayDates.Contains(date); date = date.AddDays(1));然后return date; -
该错误是因为您在 while 循环之后没有包含 return 语句。看起来这是一个永远不会被执行的地方,但它可以(比如在异常的情况下。
-
如果可以提前计算出重复次数,使用
for。如果您不知道有多少,请使用while。 -
@DmitryBychenko 我应该如何处理输入?在我的代码中,i=count, sayi=从文本框中输入数字。
标签: c# winforms while-loop