Mer*_*ert 1 c# while-loop winforms
我有这个while循环来获取下一个工作日(节假日和星期日除外)。但它是通过加上1天来计算的。我希望该天数由用户确定。我从下面的TextBox(TboxIzin)获取输入。
如何执行while循环来进行给定次数的计算?
int i = 1;
int sayi;
IzinIslem i1 = new IzinIslem();
int.TryParse(i1.TboxIzin.Text, out sayi);
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的not all code paths return a value
错误,当我尝试while循环嵌套。
while是一个条件循环。在这里,您将非条件放在子句中,并立即跟进条件。将条件放在while子句中:
while(weekendDays.Contains(date.DayOfWeek) || holidayDates.Contains(date)) {
date = date.AddDays(1);
}
return date;
Run Code Online (Sandbox Code Playgroud)
出现错误的实际原因是编译器无法预测if条件是否会解析为false。如果没有,那么您的函数将永远不会返回。
使用修改后的while循环,仍然可能会发生这种情况,但是它将导致无限循环,如果您以这种方式射击自己,编译器就可以了。
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |