c# - 如何执行给定次数的while循环?

标签 c# winforms while-loop

我有这个 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/

相关文章:

c# - 如果没有定义命名空间,类将具有什么命名空间

c# - ASP Net Core 2.1 专场

c# - jQuery ajax调用未击中 Controller ,因为字符串数据参数较大

c# - 如何隐藏实时图表中的背景网格线?

c# - 过滤 TreeView 的所有节点和子节点

while 循环中的 PHP str_replace

c++ - 不明白为什么这个 std::cout 打印这个

c# - 我们如何将一个 DataTable 的列数据复制到另一个 DataTable,即使 DataTable 之间的列名不同?

C# - 列表框不显示项目

javascript - 为什么我的 while 循环不重复?