Soru VB.NET - Her Döngüye Nasıl Bir Sonraki Öğeye Taşınır?


Gibi bir statü var mı Exit ForDöngüden çıkmak yerine sadece bir sonraki öğeye geçer.

Örneğin:

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    End If

    ' Do something

Next

Biliyorum sadece bir Else If deyimine göre şöyle okunur:

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    Else
        ' Do something
    End If

Next

Sadece bir sonraki maddeye atlamak için bir yol olup olmadığını merak ediyorum Items liste. Eminim ki çoğu sadece neden sadece Else deyim, ancak "Do Do bir şey" kod sarma bana daha az okunabilir gibi görünüyor. Özellikle çok daha fazla kod olduğunda.


76
2018-05-06 13:53


Menşei




Cevaplar:


For Each I As Item In Items
    If I = x Then Continue For

    ' Do something
Next

148
2018-05-06 13:56



Bu tam olarak ne aradığımı, ne kadar komik, MSDN belgelerinde değil mi? (msdn.microsoft.com/en-us/library/5ebk1751.aspx) Ayrıca Jon'u yazıya atmaktan 20 saniye sonra tebrikler! :) - Sean Taylor
Neredeyse bir kez daha Skeeted'i aldım! ;) - Adam Robinson


Kullanırdım Continue bunun yerine ifade:

For Each I As Item In Items

    If I = x Then
        Continue For
    End If

    ' Do something

Next

Bunun, yineleyicinin kendisini hareket ettirmekten biraz farklı olduğunu unutmayın; If tekrar idam edilecek. Genellikle istediğin bu, ama eğer kullanacaksan GetEnumerator() ve sonra MoveNext()/Current açıkça kullanmak yerine For Each döngü.


42
2018-05-06 13:56





Ne dersin:

If Not I = x Then

  ' Do something '

End If

' Move to next item '

3
2018-05-06 13:57





Aşağıdaki kodun iyi bir uygulama olmadığını açıkça belirtmek istiyorum. GOTO Etiketini kullanabilirsiniz:

For Each I As Item In Items

    If I = x Then
       'Move to next item
        GOTO Label1
    End If

    ' Do something
    Label1:
Next

2
2018-05-06 13:59



Yapabilirsin, ama lütfen yapma. - MiseryIndex
Zıpladığından dolayı, bu kötü. - Syed Tayyab Ali
İyi bir uygulama değilse ve dilin desteklediği açıkça daha iyi bir çözüm varsa (Devam Et / Devam Et), belki bu cevap gönüllü olarak kaldırılmalıdır. - eniacAvenger


Denediğimde Continue For Başarısız, bir derleyici hatası var. Bunu yaparken, 'Özgeçmiş' keşfettim:

For Each I As Item In Items

    If I = x Then
       'Move to next item
       Resume Next
    End If

    'Do something

Next

Not: Burada VBA kullanıyorum.


0
2017-09-28 11:28



Bu kod VBA'da bile çalışmıyor. Resume Next yapılandırılmamış hata işleme içindir. - Daniel