Aracılığıyla paylaş


İçin...Sonraki ifade (Visual Basic)

Bir grup ifadeleri, belirtilen sayıda yineler.

For counter [ As datatype ] = start To end [ Step step ]
    [ statements ]
    [ Continue For ]
    [ statements ]
    [ Exit For ]
    [ statements ]
Next [ counter ]

Bölümleri

Parça

Tanımlama

counter

Gerekli For ifadesi.Sayısal bir değişken.For döngüsü denetim değişkeni.Daha fazla bilgi için bu konudan sonrakiSayaç bağımsız değişkeni bölümüne bakın.

datatype

İsteğe Bağlı.Veri türü counter.Daha fazla bilgi için bu konudan sonrakiSayaç bağımsız değişkeni bölümüne bakın.

start

Gerekli.Sayısal ifade.Başlangıç değeri counter.

end

Gerekli.Sayısal ifade.Son değeri counter.

step

İsteğe Bağlı.Sayısal ifade.Hangi oranda counter döngünün her tamamlanışında artırılır.

statements

İsteğe Bağlı.Bir ya da daha fazla ifadeyi arasında For ve Next belirtilen sayı kadar çalıştırmak.

Continue For

İsteğe Bağlı.Sonraki Döngü yinelemesini denetlemek aktarımları.

Exit For

İsteğe Bağlı.İşyeri aktarır For döngü.

Next

Gerekli.Tanımını sonlandırır For döngü.

[!NOT]

To Anahtar sözcüğünü bu ifadede sayaç için aralık belirlemek için kullanılır.Bu anahtar sözcüğü de kullanılabilir Seç...Case ifadesini (Visual Basic) ve dizi bildirimleri.Dizi bildirimleri hakkında daha fazla bilgi için bkz: Dim deyimi (Visual Basic).

Basit örnekler

You use a For...Next yapısı ifadeleri kümesi yineleme sayısı ayarlamak istediğinizde.

Aşağıdaki örnekte, index değişken değerinin 1 ile başlar ve sonra değeri bitiş döngünün her yineleme ile artırılır index 5 ulaşır.

For index As Integer = 1 To 5
    Debug.Write(index.ToString & " ")
Next
Debug.WriteLine("")
' Output: 1 2 3 4 5

Aşağıdaki örnekte, number değişken 2 olarak başlar ve sonra değeri bitiş döngünün her yineleme 0,25 azalır number 0 ulaşır.Step Bağımsız değişkeni -.25 değeri her döngü tekrarında üzerinde 0,25 tarafından azaltır.

For number As Double = 2 To 0 Step -0.25
    Debug.Write(number.ToString & " ")
Next
Debug.WriteLine("")
' Output: 2 1.75 1.5 1.25 1 0.75 0.5 0.25 0 
İpucuİpucu

A While...Son ifadesinin (Visual Basic) veya Yapın...Loop deyimini (Visual Basic) ne zaman, önceden içinde döngü deyimleri çalıştırmak için kaç kez bilmiyorum iyi çalışır.Ancak, ne zaman beklediğiniz zaman, belirli bir sayıda döngü çalıştırmak bir For...Next döngü daha iyi bir seçimdir.Döngünün ilk girdiğinizde yineleme sayısını belirler.

İç içe döngüler

İç içe geçirebilirsiniz For koyarak bir döngü içinde başka bir döngü.Aşağıdaki örnek, iç içe geçmiş gösterir For...Next adım farklı değerlere sahip yapıları.Dış döngü döngünün her yineleme için bir dize oluşturur.Döngünün her yineleme için bir döngü sayacı değişkeni iç döngü azaltır.

For indexA = 1 To 3
    ' Create a new StringBuilder, which is used
    ' to efficiently build strings.
    Dim sb As New System.Text.StringBuilder()

    ' Append to the StringBuilder every third number
    ' from 20 to 1 descending.
    For indexB = 20 To 1 Step -3
        sb.Append(indexB.ToString)
        sb.Append(" ")
    Next indexB

    ' Display the line.
    Debug.WriteLine(sb.ToString)
Next indexA
' Output:
'  20 17 14 11 8 5 2
'  20 17 14 11 8 5 2
'  20 17 14 11 8 5 2

Her döngü döngüler en baþtaki benzersiz bir olmalıdır counter değişkeni.

Farklı denetim yapıları birbirine içinde iç içe yerleştirebilirsiniz.Daha fazla bilgi için bkz. İç içe geçmiş denetim yapıları (Visual Basic).

Çıkmak için ve devam etmek için

Exit For İfadesi hemen çıkar For...Next döngü ve transferleri denetim için aşağıdaki deyimi Next ifadesi.

Continue For Deyimi aktarır hemen sonraki döngü için.Daha fazla bilgi için bkz. Continue ifadeleri (Visual Basic).

Aşağıdaki örnek kullanımını gösterir Continue For ve Exit For deyimleri.

For index As Integer = 1 To 100000
    ' If index is between 5 and 7, continue
    ' with the next iteration.
    If index >= 5 And index <= 8 Then
        Continue For
    End If

    ' Display the index.
    Debug.Write(index.ToString & " ")

    ' If index is 10, exit the loop.
    If index = 10 Then
        Exit For
    End If
Next
Debug.WriteLine("")
' Output: 1 2 3 4 9 10

Herhangi bir sayıda koyabilirsiniz Exit For deyimlerinde bir For...Next loop.Kullanıldığında içinde iç içe For...Next döngüleri, Exit For en içteki döngü çıkar ve denetim bir sonraki daha yüksek düzeye iç içe aktarır.

Exit Forbir koşulu değerlendirmek sonra sık sık kullanılır (örneğin, bir If...Then...Else yapısı).Kullanmak istediğiniz Exit For için aşağıdaki koşullar:

  • Yineleme devam etmeden, gereksiz ya da olanaksız.Bu durum, hatalı bir değer veya bir sonlandırma isteği oluşturabilir.

  • A Try...Catch...Finally ifadesi bir özel durum yakalıyor.Kullanım Exit For sonunda Finally blok.

  • Büyük veya sonsuz bile birkaç kez çalıştırılan bir döngü sonsuz bir döngüye var.Böyle bir durum olduğunu görürseniz, kullanabileceğiniz Exit For döngü atlamak için.Daha fazla bilgi için bkz. Yapın...Loop deyimini (Visual Basic).

Teknik uygulama

When a For...Next döngü başlatır, Visual Basic değerlendirir start, end, ve step.Visual Basic değerlendirir bu değerleri yalnızca bu zaman ve atar sonra start için counter.Önce deyim blok çalışır, Visual Basic karşılaştırır counter için end.counter Zaten sayısından daha büyük end değeri (veya daha küçük step negatif), For döngü sona erer ve aşağıdaki deyimi denetim Next ifadesi.Aksi durumda, deyim bloğunu çalışır.

Visual Basic karşılaştığı her zaman Next deyimi, onu artırır counter tarafından step ve döner For ifadesi.Yeniden karşılaştırır counter için end, ve yeniden blok çalışır ya sonucuna bağlı olarak, döngü çıkar.Kadar bu işleme devam eder counter geçen end veya bir Exit For deyimi ile karşılaştı.

Döngü kadar durdurmaz counter geçen end.counter Eşittir end, döngü devam eder.Blok çalıştırılıp çalıştırılmayacağını belirleyen karşılaştırma counter < = end , step pozitif ve counter > = end , step negatif olur.

Değeri değiştirirseniz, counter döngü sırasında içinde kod okumak ve hata ayıklamak daha zor olabilir.Değerinin değiştirilmesi start, end, veya step döngünün ilk girilen içermediği belirlenen yineleme değerleri etkilemez.

Karşılaştığında, hata derleyicisi, iç içe döngü, sinyalleri Next önce dış iç içe geçme düzeyini ifade Next iç düzeyini ifade.Ancak, derleyici bu hata, yalnızca belirlediğiniz üst üste algılayabilir counter , her Next ifadesi.

5z06z1kb.collapse_all(tr-tr,VS.110).gifAdım bağımsız değişkeni

Değeri step pozitif veya negatif olabilir.Bu parametre aşağıdaki tabloya göre döngü işleme belirler:

Adım değeri

Döngü yürütür

Pozitif veya sıfır

counter< =end

Negatif

counter> =end

Varsayılan değer olan step 1'dir.

5z06z1kb.collapse_all(tr-tr,VS.110).gifSayaç bağımsız değişkeni

Aşağıdaki tablo gösterir olup olmadığını counter için tüm kapsamına yeni bir yerel değişken tanımlar For…Next döngü.Bu belirleme bağlıdır datatype var olup olmadığını ve counter zaten tanımlandı.

Olan datatype var?

Olan counter önceden tanımlanmış?

Sonuç (olup olmadığını counter için tüm kapsamına yeni bir yerel değişken tanımlar For...Next döngüsü)

Hayır

Evet

Hayır, çünkü counter zaten tanımlandı.Yoksa kapsamını counter yordamı için yerel olmayan bir derleme zamanı uyarı oluşur.

Hayır

Hayır

Evet.Veri türü gelen olayla start, end, ve step ifadeler.Tür çıkarımı hakkında daha fazla bilgi için bkz: Seçenek gerçekleştirip deyimi ve Yerel tür kesmesi (Visual Basic).

Evet

Evet

Evet, ancak yalnızca varolan counter değişken, yordamın dışında tanımlanır.Bu değişken ayrı kalır.Varsa varolan kapsamı counter değişken için yordam, yerel bir derleme zamanı hatası oluşur.

Evet

Hayır

Evet.

Veri türü counter aşağıdaki türlerden biri olmalıdır yinelemenin türünü belirler:

  • A Byte, SByte, UShort, Short, UInteger, Integer, ULong, Long, Decimal, Single, or Double.

  • Numaralandýrma kullanarak bildirdiğiniz bir Enum deyimi (Visual Basic).

  • An Object.

  • Bir tür T aşağıdaki işleçleri olan nerede B kullanılabilir bir türü olan bir Boolean ifade.

    Public Shared Operator >= (op1 As T, op2 As T) As B

    Public Shared Operator <= (op1 As T, op2 As T) As B

    Public Shared Operator - (op1 As T, op2 As T) As T

    Public Shared Operator + (op1 As T, op2 As T) As T

İsteğe bağlı olarak belirtebileceğiniz counter değişken Next ifadesi.Özellikle, yuvalanmış, bu sözdizimi, programınızın okunabilirliğini artırır For döngüleri.İlgili görüntülenen değişkeni belirtmelisiniz For ifadesi.

start, end, Ve step ifadeleri değerlendirmek türüne widens herhangi bir veri türü için counter.Bir kullanıcı tanımlı türü için kullanırsanız, counter, tanımlamak zorunda kalabilirsiniz CType türlerini dönüştürmek için dönüştürme işleci start, end, veya step türüne counter.

Örnek

Aşağıdaki örnek, tüm öğelerin genel bir listeden kaldırır.Yerine bir Her için...Sonraki ifade (Visual Basic), örnekte gösterildiği bir For...Next deyimi azalan sırada sırayla dolaşır.Örnek için bu tekniği kullanan removeAt yöntemi öğelerin kaldırılan öğesinden sonra bir alt dizin değerine sahip olmasına neden olur.

Dim lst As New List(Of Integer) From {10, 20, 30, 40}

For index As Integer = lst.Count - 1 To 0 Step -1
    lst.RemoveAt(index)
Next

Debug.WriteLine(lst.Count.ToString)
' Output: 0

Aşağıdaki örnek kullanarak bildirilen bir numaralandırma dolaşır bir Enum deyimi (Visual Basic).

Public Enum Mammals
    Buffalo
    Gazelle
    Mongoose
    Rhinoceros
    Whale
End Enum


Public Sub ListSomeMammals()
    For mammal As Mammals = Mammals.Gazelle To Mammals.Rhinoceros
        Debug.Write(mammal.ToString & " ")
    Next
    Debug.WriteLine("")
    ' Output: Gazelle Mongoose Rhinoceros
End Sub

Aşağıdaki örnekte, deyimi parametreler için işlecin bulunduğu bir sınıf kullanmak +, -, >=, ve <= işleçleri.

Private Class Distance
    Public Property Number() As Double

    Public Sub New(ByVal number As Double)
        Me.Number = number
    End Sub

    ' Define operator overloads to support For...Next statements.
    Public Shared Operator +(ByVal op1 As Distance, ByVal op2 As Distance) As Distance
        Return New Distance(op1.Number + op2.Number)
    End Operator

    Public Shared Operator -(ByVal op1 As Distance, ByVal op2 As Distance) As Distance
        Return New Distance(op1.Number - op2.Number)
    End Operator

    Public Shared Operator >=(ByVal op1 As Distance, ByVal op2 As Distance) As Boolean
        Return (op1.Number >= op2.Number)
    End Operator

    Public Shared Operator <=(ByVal op1 As Distance, ByVal op2 As Distance) As Boolean
        Return (op1.Number <= op2.Number)
    End Operator
End Class


Public Sub ListDistances()
    Dim distFrom As New Distance(10)
    Dim distTo As New Distance(25)
    Dim distStep As New Distance(4)

    For dist As Distance = distFrom To distTo Step distStep
        Debug.Write(dist.Number.ToString & " ")
    Next
    Debug.WriteLine("")

    ' Output: 10 14 18 22 
End Sub

Ayrıca bkz.

Başvuru

While...Son ifadesinin (Visual Basic)

Yapın...Loop deyimini (Visual Basic)

Exit deyimi (Visual Basic)

List<T>

Kavramlar

Döngü yapıları (Visual Basic)

İç içe geçmiş denetim yapıları (Visual Basic)

Diğer Kaynaklar

Koleksiyon (C# ve Visual Basic)