VB.NET临时修改循环的起始值吗?

时间:2018-07-24 13:49:02

标签: .net vb.net loops

假设我有以下代码:

For intA As Integer = 1 To 5
    For intB As Integer = 1 To 50
        For intC As Integer = 1 to 100
            ...
        Next intC
    Next intB
 Next intA

我想将进度保存到db表中,以便以后可以继续。因此,假设intA当前为2,intB当前为14,intC当前为54。

这些被保存在这样的表中:

 intA     intB     intC
========================
  2        14       54

很简单。

当我想继续时,如何将每个循环设置为当前保存的值?

我不能简单地将初始循环的开始设置为保存的值,因为那样会改变整个循环的“运行”。

我可能会使用一个标志来表示一个值已被存储并执行以下操作:

booSavedC As Boolean = IsSavedC  'This resides outside all loops, so "single shot"

For intC As Integer = 1 to 100
    If booSavedC Then
        intC = GetSavedC   'or intC = GetSavedC + 1
        booSavedC = False
    End If

    ...
Next intC

但是,这使得每个单独的检查都要检查booSavedC变量,并且还要检查外部循环的变量(booSavedB和booSavedA),等等。

有没有更好,更便宜的方式?

1 个答案:

答案 0 :(得分:4)

基于我上面的评论:

  

您需要使用变量作为循环的起始值   计数器,您可以将它们设置为数据库中的值。内   每个循环,只需将相关变量设置为1,这样循环将   在父循环的下一次迭代中再次从1开始。

这是一个示例:

.carousel{
height: 60vh
} 

您不必重置Module Module1 Sub Main() Console.WriteLine("iMin=1, jMin=1, kMin=1") RunLoops(1, 1, 1) Console.WriteLine() Console.WriteLine("iMin=2, jMin=3, kMin=4") RunLoops(2, 3, 4) Console.ReadLine() End Sub Sub RunLoops(iMin As Integer, jMin As Integer, kMin As Integer) For i = iMin To 5 iMin = 1 For j = jMin To 5 jMin = 1 For k = kMin To 5 kMin = 1 Console.WriteLine($"i={i}, j={j}, k={k}") Next Next Next End Sub End Module ,因为该循环仅运行一次。它在那里是为了完整性。

编辑:

基于下面@the_lotus的注释以及无需重置最外层循环的起始值的事实,下面是一些修改后的代码:

iMin