Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yineleme deyimleri -
Bir deyimini veya deyim bloğunu tekrar tekrar yürütmek için yineleme deyimlerini kullanın.
Deyimi,for belirtilen bir Boole ifadesi olarak değerlendirilirken gövdesini trueyürütür. deyimi bir foreach koleksiyonun öğelerini numaralandırır ve koleksiyonunun her öğesi için gövdesini yürütür.
deyimido, gövdesini bir veya daha fazla kez koşullu olarak yürütür.
deyimiwhile, koşullu olarak gövdesini sıfır veya daha fazla kez yürütür.
Yineleme deyiminin gövdesinde herhangi bir noktada deyimini kullanarak döngüden breakçıkabilirsiniz. deyimini kullanarak döngüdeki bir sonraki yinelemeye continueadım atabilirsiniz.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
for ifadesi
deyimi for bir deyimini veya deyim bloğunu yürütürken, belirtilen Boole ifadesi olarak truedeğerlendirilir. Aşağıdaki örnek, bir tamsayı sayacı üçten küçükken gövdesini yürüten for deyimini göstermektedir.
for (int i = 0; i < 3; i++)
{
Console.Write(i);
}
// Output:
// 012
Önceki örnekte for ifadesinin öğeleri gösterilmektedir:
Döngüye girmeden önce yalnızca bir kez yürütülen başlatıcı bölümü. Genellikle, bu bölümde bir yerel döngü değişkeni bildirir ve başlatırsınız. Bildirilen değişkene deyiminin dışından
forerişemezsiniz.Yukarıdaki örnekteki başlatıcı bölümü bir tamsayı sayacı değişkeni bildirir ve başlatır:
int i = 0Döngüdeki bir sonraki yinelemenin çalıştırılıp çalıştırılamadığını belirleyen koşul bölümü. Değerlendirmesi
trueyapılırsa veya yoksa, sonraki yineleme çalıştırılır. Aksi takdirde, döngü çıkar. Koşul bölümü bir Boole ifadesi olmalıdır.Yukarıdaki örnekteki koşul bölümü, sayaç değerinin üçten küçük olup olmadığını denetler:
i < 3Döngü gövdesinin her yürütülmesinden sonra ne olacağını tanımlayan yineleyici bölümü.
Önceki örnekteki yineleyici bölümü sayacı artırır:
i++Döngünün gövdesi, bir ifade veya ifade bloğu olmalıdır.
Yineleyici bölümü, virgülle ayrılmış olarak aşağıdaki deyim ifadelerinden sıfır veya daha fazlasını içerebilir:
- ön ek veya sonek artım ifadesi,
++iveyai++gibi - ön ek veya sonek azaltma ifadesi,
--iveyai--gibi - Atama/Ödev
- yöntemi çağırma
-
awaitifade -
işlecini kullanarak
newnesne oluşturma
Başlatıcı bölümünde bir döngü değişkeni bildirmezseniz, başlatıcı bölümündeki önceki listede yer alan ifadelerin sıfırını veya daha fazlasını da kullanabilirsiniz. Aşağıdaki örnekte başlatıcı ve yineleyici bölümlerinin daha az yaygın olarak kullanılan birkaç kullanımı gösterilmektedir: başlatıcı bölümündeki bir dış değişkene değer atama, hem başlatıcı hem de yineleyici bölümlerinde bir yöntem çağırma ve yineleyici bölümündeki iki değişkenin değerlerini değiştirme:
int i;
int j = 3;
for (i = 0, Console.WriteLine($"Start: i={i}, j={j}"); i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
//...
}
// Output:
// Start: i=0, j=3
// Step: i=1, j=2
// Step: i=2, j=1
İfadenin tüm bölümleri isteğe bağlıdır. Örneğin, aşağıdaki kod sonsuz for döngüsü tanımlar:
for ( ; ; )
{
//...
}
foreach ifadesi
foreach deyimi, aşağıdaki örnekte gösterildiği gibi System.Collections.IEnumerable veya System.Collections.Generic.IEnumerable<T> arabirimini uygulayan türlerin bir örneğindeki her öğe için bir deyim veya bir deyim bloğu yürütür.
List<int> fibNumbers = new() { 0, 1, 1, 2, 3, 5, 8, 13 };
foreach (int element in fibNumbers)
{
Console.Write($"{element} ");
}
// Output:
// 0 1 1 2 3 5 8 13
deyimi foreach bu türlerle sınırlı değildir. Bunu aşağıdaki koşulları karşılayan herhangi bir tür örneğiyle kullanabilirsiniz:
- Bir tür, genel parametresiz
GetEnumeratoryöntemine sahiptir.GetEnumeratoryöntemi bir uzantı yöntemi olabilir. - yöntemin
GetEnumeratordönüş türü, dönüş türüCurrentolan publicMoveNextözelliğine ve public parametresizboolyöntemine sahiptir.
Aşağıdaki örnek, foreach ifadesini, herhangi bir arayüzü uygulamayan System.Span<T> türünün bir örneği ile kullanır.
Span<int> numbers = [3, 14, 15, 92, 6];
foreach (int number in numbers)
{
Console.Write($"{number} ");
}
// Output:
// 3 14 15 92 6
Numaralandırıcının Current özelliği bir başvuru dönüş değeri döndürürse (ref Tburada T bir koleksiyon öğesinin türüdür), aşağıdaki örnekte gösterildiği gibi veya ref değiştiricisi ref readonly ile bir yineleme değişkeni bildirebilirsiniz:
Span<int> storage = stackalloc int[10];
int num = 0;
foreach (ref int item in storage)
{
item = num++;
}
foreach (ref readonly var item in storage)
{
Console.Write($"{item} ");
}
// Output:
// 0 1 2 3 4 5 6 7 8 9
deyiminin kaynak koleksiyonu foreach boşsa, deyiminin foreach gövdesi yürütülür ve atlanır.
foreach deyimi null uygulanırsa, bir NullReferenceException fırlatılır.
await foreach ile koleksiyonu eşzamansız olarak yinelemek
await foreach Zaman uyumsuz bir veri akışı, yani arabirimi uygulayan bir koleksiyon türü kullanmak için deyimini IAsyncEnumerable<T> kullanın. Sonraki öğe zaman uyumsuz olarak alınırken döngünün her yinelemesi askıya alınabilir. Aşağıdaki örnek, await foreach ifadesini nasıl kullanacağınızı göstermektedir:
await foreach (var item in GenerateSequenceAsync())
{
Console.WriteLine(item);
}
Herhangi bir türün aşağıdaki koşulları karşılayan örneğiyle await foreach deyimini de kullanabilirsiniz.
- Bir tür, genel parametresiz
GetAsyncEnumeratoryöntemine sahiptir. Bu yöntem bir uzantı üyesi olabilir. -
GetAsyncEnumeratoryönteminin dönüş türü, publicCurrentözelliğine ve dönüş türüMoveNextAsync,Task<bool>veya awaiter'ınValueTask<bool>yöntemi birGetResultdeğeri döndüren herhangi başka bir beklenebilir türe sahip olan public parametresizboolyöntemine sahiptir.
Deyimi varsayılan olarak yakalanan await foreach bağlamdaki akış öğelerini işler. Bağlam yakalamayı devre dışı bırakmak istiyorsanız uzantı yöntemini kullanın TaskAsyncEnumerableExtensions.ConfigureAwait . Eşzamanlama bağlamları ve geçerli bağlamı yakalama hakkında daha fazla bilgi için bkz. Görev tabanlı zaman uyumsuz deseni kullanma. Asenkron akışlar hakkında daha fazla bilgi için asenkron akışlar öğreticisine bakın.
Yineleme değişkeninin türü
Aşağıdaki kodda gösterildiği gibi derleyicinin deyimindeki foreach bir yineleme değişkeninin türünü çıkarmasına izin vermek için anahtar sözcüğünü kullanın:var
foreach (var item in collection) { }
Uyarı
Derleyici, null atanabilir algılayan bağlamın etkin olup olmadığına ve başlatma ifadesinin var türünün başvuru türü olup olmadığına bağlı olarak bir bildirimin türünü null atanabilir başvuru türü olarak çıkarsayabilir.
Daha fazla bilgi için bkz. Örtük olarak yazılan yerel değişkenler.
Aşağıdaki kodda gösterildiği gibi yineleme değişkeninin türünü açıkça belirtebilirsiniz:
IEnumerable<T> collection = new T[5];
foreach (V item in collection) { }
Önceki formda, bir koleksiyon öğesinin türü T örtük veya açıkça bir yineleme değişkeni türüne V dönüştürülebilir olmalıdır. Açık bir dönüştürmeden TV çalışma zamanında başarısız olursa, foreach deyimi bir InvalidCastException oluşturur. Örneğin, T mühürlenmemiş bir sınıf türüyse, V, T tarafından uygulanmasa bile herhangi bir arabirim türü olabilir. Çalışma zamanında, bir koleksiyon öğesinin türü öğesinden T türetilen ve aslında uygulayan Vöğe olabilir. Böyle bir durum söz konusu değilse, bir InvalidCastException oluşturulur.
do ifadesi
deyimi do bir deyimini veya deyim bloğunu yürütürken, belirtilen Boole ifadesi olarak truedeğerlendirilir. Döngü her yürütmeden sonra bu ifadeyi değerlendirdiğinden, bir döngü bir do veya daha fazla kez yürütülür. Döngüdo, sıfır veya daha fazla kez yürütülen döngüdenwhile farklıdır.
Aşağıdaki örnek, do deyiminin kullanımını gösterir:
int n = 0;
do
{
Console.Write(n);
n++;
} while (n < 5);
// Output:
// 01234
while ifadesi
deyimi while bir deyimini veya deyim bloğunu yürütürken, belirtilen Boole ifadesi olarak truedeğerlendirilir. Döngü her yürütmeden önce bu ifadeyi değerlendirdiğinden, döngü while sıfır veya daha fazla kez yürütülür. Döngüwhile, bir veya daha fazla kez yürütülen döngüdendo farklıdır.
Aşağıdaki örnek, while deyiminin kullanımını gösterir:
int n = 0;
while (n < 5)
{
Console.Write(n);
n++;
}
// Output:
// 01234
C# dil belirtimi
Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın: