2009-02-24 2 views
-4

Можно ли написать бесконечный цикл for в VB.NET?VB.NET Infinite For Loop

Если да, то какой синтаксис?

+0

Я бы предположил, что кто-то считает, что это плохая идея, чтобы даже попытаться. Нет абсолютно никаких оснований для этого. Вы можете уточнить, почему вы хотите это знать. – EBGreen

+4

Поместите меня в категорию «это плохая идея». –

+2

удалите из первой строки и попросите вырваться из нее, и вы можете быть в разумном сценарии. – cjk

ответ

7
For i as Integer = 0 To 1 Step 0 

Если этого не достаточно Hacky, можно также написать:

For i As Integer = 0 To 2 
    i -= 1 
Next 
+0

Да, первый из них намного чище, если вам почему-то пришлось использовать цикл For. –

+0

целое число в конечном итоге переполнится во второй версии. – dotjoe

+0

@ Джо, не должно. Он должен циклически переключаться между 0 и 1. –

11
Do 
    Something 
Loop 
+0

он сказал для цикла;) –

+0

Зачем вам это? Если бы это было загадкой, вы должны были сказать это в вопросе. – erikkallen

+0

Это не предназначено для головоломки. Спасибо за ваш вклад. – user62572

4

или

while (true) 

end while 

нормально, собственно Для ответа:

Dim InfiniteLoop as Boolean = true; 
For i = 1 to 45687894 

    If i = 45687893 And InfiniteLoop = true Then i = 1 
End For 
+0

он сказал для цикла;) –

+2

Возможно, это потому, что он не знал о других видах. За цикл, который не подходит, просто путает людей, потому что нет смысла. – cjk

+0

Не более чем точка, которая не заканчивается. – EBGreen

0

Что я делаю, это добавить таймер, тогда я меняю интервал на 1, а затем я включаю его. Если я хочу, чтобы он постоянно проверял что-то в цикле, я просто дважды нажимаю на таймер для события timer_tick, затем я печатаю то, что Я хочу. Обычно я использую это для обновления настроек, если я хочу, чтобы он сохранил все.

+0

цикл for будет работать намного быстрее, чем таймер, если вы хотите что-то постоянно проверять - таймер может быть слишком медленным – Dman

1

Помимо множества ответов, заданных для того, чтобы цикл выполнялся вечно, это может быть только первое, что фактически использует значение Positive Infinity для ограничения цикла. Однако, чтобы быть в безопасности, я включил дополнительную возможность выхода через определенное количество секунд, чтобы он мог измерять скорость вашего цикла.

Sub RunInfinateForLoop(maxSeconds As Integer) 
    ' Attempts to run a For loop to infinity but also exits if maxSeconds seconds have elapsed. 
    Dim t As Date = Now 
    Dim exitTime As Date = t.AddSeconds(maxSeconds) 
    Dim dCounter As Double 
    Dim strMessage As String 
    For dCounter = 1 To Double.PositiveInfinity 
     If Now >= exitTime Then Exit For 
    Next 
    strMessage = "Loop ended after " & dCounter.ToString & " loops in " & maxSeconds & " seconds." & vbCrLf & 
     "Average speed is " & CStr(dCounter/maxSeconds) & " loops per second." 
    MsgBox(strMessage, MsgBoxStyle.OkOnly, "Infinity Timer") 

End Sub