For...Next Deyimi (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 Select...Case Deyimi (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 |
---|
A While...End While Deyimi (Visual Basic) veya Do...Loop Deyimi (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. İç İç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 Deyimi (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. Do...Loop Deyimi (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.
Adı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.
Sayaç 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: Option Infer Deyimi ve Yerel Türü Arabirimi (Visual Basic Başvurusu). |
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 For Each...Next Deyimi (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...End While Deyimi (Visual Basic)
Do...Loop Deyimi (Visual Basic)
Kavramlar
Çevrim Yapıları (Visual Basic)
İç İçe Geçmiş Denetim Yapıları (Visual Basic)