Altbilgi içeriğine atla
.NET YARDıM

C# For Each (Geliştiriciler İçin Nasıl Çalışır)

Bu öğreticide, geliştiriciler için temel bir araç olan "C# foreach" döngüsünü ele alacağız. foreach döngüsü, bir koleksiyon boyunca yineleme sürecini basitleştirir ve her bir öğe üzerinde işlem yapmayı, temel ayrıntılar hakkında endişe duymadan kolaylaştırır. foreach'nin önemi, kullanım durumları ve C# kodunuzda nasıl uygulanacağı üzerinde konuşacağız.

foreach Döngüsüne Giriş

foreach döngüsü, geliştiriciler için koleksiyonlar arasında özlü ve okunabilir bir şekilde yineleme yapabilmeleri için güçlü bir araçtır. Bu, kodu basitleştirir ve koleksiyon öğelerinin indeksini veya sayısını elle yönetme gereği olmadığından hata olasılıklarını azaltır. Okunabilirlik ve sadelik açısından, foreach döngüsü genellikle geleneksel for döngüsünden tercih edilir.

foreach için kullanım durumları şunlardır:

  • Bir koleksiyondaki değerleri toplama
  • Bir koleksiyonda bir öğe arama
  • Bir koleksiyondaki öğeleri değiştirme
  • Bir koleksiyonun her bir elemanı üzerinde işlem yapmak

Koleksiyonları Anlamak

C# dilinde, bir grup öğeyi tek bir nesnede depolamak için kullanılan farklı türde koleksiyonlar bulunmaktadır. Bunlar arasında diziler, listeler, sözlükler ve daha fazlası bulunur. foreach döngüsü, IEnumerable veya IEnumerable<t> arayüzünü uygulayan herhangi bir koleksiyonla kullanılabilecek kullanışlı bir araçtır.

Yaygın bazı koleksiyon türleri şunlardır:

  • Diziler: Aynı veri tipine sahip elemanların sabit boyutlu koleksiyonu.
  • Listeler: Aynı veri türüne sahip öğelerin dinamik bir koleksiyonu.
  • Sözlükler: Her anahtarın benzersiz olduğu anahtar-değer çiftlerinden oluşan bir koleksiyon.

System.Collections.Generic namespace'i koleksiyonlarla çalışmak için çeşitli türler içerir.

Implementing the foreach statement in C

Artık koleksiyonlar ve foreach döngüsü hakkında temel bir anlayışa sahip olduğumuza göre, gelin C#'deki sözdizimine bakalım ve nasıl çalıştığını görelim.

foreach Döngüsünün Sözdizimi

foreach (variableType variableName in collection)
{
    // Code to execute for each item
}
foreach (variableType variableName in collection)
{
    // Code to execute for each item
}
For Each variableName As variableType In collection
	' Code to execute for each item
Next variableName
$vbLabelText   $csharpLabel

Burada variableType, koleksiyondaki öğelerin veri türünü temsil eder, variableName, döngüdeki mevcut öğeye (döngü değişkeni) verilen addır ve collection, yinelemek istediğiniz koleksiyona atıfta bulunur.

Örnek

Bir tamsayı listesine sahip olduğumuzu ve listedeki tüm elemanların toplamını bulmak istediğimizi düşünelim.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Create a list of integers
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Initialize a variable to store the sum
        int sum = 0;

        // Iterate through the list using foreach loop
        foreach (int number in numbers)
        {
            sum += number;
        }

        // Print the sum
        Console.WriteLine("The sum of the elements is: " + sum);
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Create a list of integers
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Initialize a variable to store the sum
        int sum = 0;

        // Iterate through the list using foreach loop
        foreach (int number in numbers)
        {
            sum += number;
        }

        // Print the sum
        Console.WriteLine("The sum of the elements is: " + sum);
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Program
	Shared Sub Main()
		' Create a list of integers
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}

		' Initialize a variable to store the sum
		Dim sum As Integer = 0

		' Iterate through the list using foreach loop
		For Each number As Integer In numbers
			sum += number
		Next number

		' Print the sum
		Console.WriteLine("The sum of the elements is: " & sum)
	End Sub
End Class
$vbLabelText   $csharpLabel

Çıktı

Döngü çalıştırıldığında, aşağıdaki çıktıyı verir.

The sum of the elements is: 15

Yukarıdaki örnekte, önce numbers adlı bir tamsayı listesi oluşturuyoruz ve elemanların toplamını depolamak için sum adlı bir değişkeni başlatıyoruz. Daha sonra, listeyi geçmek ve her elemanın değerini toplamaya eklemek için foreach döngüsünü kullanıyoruz. Son olarak, toplamı konsola yazdırıyoruz. Bu yöntem, benzer şekilde diğer koleksiyonlar üzerinde de yazdırmak veya işlem yapmak için uyarlanabilir.

Varyasyonlar ve En İyi Uygulamalar

Artık foreach döngüsünün nasıl kullanılacağı hakkında temel bir anlayışa sahip olduğumuza göre, gelin bazı varyasyonlar ve en iyi uygulamalar üzerinde tartışalım.

Sadece Okuma Yinelemesi: foreach döngüsü, sadece okuma yinelemesi için en uygunudur, çünkü iterasyon sırasında koleksiyonu değiştirmek beklenmedik sonuçlara veya çalışma zamanı hatalarına yol açabilir. Eğer iterasyon sırasında koleksiyonu değiştirmeniz gerekiyorsa, geleneksel for döngüsünü kullanmayı veya istenen değişikliklerle yeni bir koleksiyon oluşturmayı düşünün.

var anahtar kelimesini kullanma: Koleksiyondaki öğelerin veri türünü açıkça belirtmek yerine, derleyicinin veri türünü çıkarmasına izin vermek için var anahtar kelimesini kullanabilirsiniz. Bu, kodu daha özlü ve bakımını kolay hale getirebilir.

Örnek:

foreach (var number in numbers)
{
    Console.WriteLine(number);
}
foreach (var number in numbers)
{
    Console.WriteLine(number);
}
For Each number In numbers
	Console.WriteLine(number)
Next number
$vbLabelText   $csharpLabel

Sözlükler arasında iterasyon: Sözlükler arasında iterasyon yapmak için bir foreach döngüsü kullanırken, KeyValuePair yapısıyla çalışmanız gerekecek. Bu yapı, sözlükteki bir anahtar-değer çiftini temsil eder.

Örnek:

Dictionary<string, int> ageDictionary = new Dictionary<string, int>
{
    { "Alice", 30 },
    { "Bob", 25 },
    { "Charlie", 22 }
};

foreach (KeyValuePair<string, int> entry in ageDictionary)
{
    Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
}
Dictionary<string, int> ageDictionary = new Dictionary<string, int>
{
    { "Alice", 30 },
    { "Bob", 25 },
    { "Charlie", 22 }
};

foreach (KeyValuePair<string, int> entry in ageDictionary)
{
    Console.WriteLine($"{entry.Key} is {entry.Value} years old.");
}
Dim ageDictionary As New Dictionary(Of String, Integer) From {
	{"Alice", 30},
	{"Bob", 25},
	{"Charlie", 22}
}

For Each entry As KeyValuePair(Of String, Integer) In ageDictionary
	Console.WriteLine($"{entry.Key} is {entry.Value} years old.")
Next entry
$vbLabelText   $csharpLabel

LINQ ve foreach: LINQ (Language Integrated Query), C#'de veriyi daha bildirimli bir şekilde sorgulama ve manipüle etmeyi sağlayan güçlü bir özelliktir. Daha anlamlı ve verimli kod yaratmak için LINQ'yu foreach döngüsü ile kullanabilirsiniz.

Örnek:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Use LINQ to filter out even numbers
        var evenNumbers = numbers.Where(n => n % 2 == 0);

        // Iterate through the even numbers using foreach loop
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Use LINQ to filter out even numbers
        var evenNumbers = numbers.Where(n => n % 2 == 0);

        // Iterate through the even numbers using foreach loop
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq

Friend Class Program
	Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}

		' Use LINQ to filter out even numbers
		Dim evenNumbers = numbers.Where(Function(n) n Mod 2 = 0)

		' Iterate through the even numbers using foreach loop
		For Each number In evenNumbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF İşlevselliğini C# foreach Eğitimine Ekleme

Bu bölümde, C# 'foreach' döngüsü konusundaki eğitimimize, C# içinde PDF dosyalarıyla çalışmak için popüler bir kütüphane olan IronPDF'yi tanıtarak genişleteceğiz. Veri koleksiyonuna dayalı bir PDF raporu oluşturmak için foreach döngüsünü IronPDF ile birleştirerek nasıl kullanacağımızı göstereceğiz.

IronPDF Tanıtımı

IronPDF, C#'ta PDF dosyaları oluşturmak, düzenlemek ve içeriğini çıkartmak için güçlü bir kütüphanedir. PDF belgeleriyle çalışmaya yönelik kullanımı kolay bir API sunar, bu da uygulamalarına PDF işlevselliği eklemek isteyen geliştiriciler için mükemmel bir seçenektir.

IronPDF'nin bazı anahtar özellikleri şunlardır:

  • HTML, URL'ler ve görüntülerden PDF oluşturma
  • Mevcut PDF belgelerini düzenleme
  • PDF'lerden metin ve görüntüleri çıkarma
  • PDF'lere açıklama, form alanları ve şifreleme ekleme

Installing IronPDF

IronPDF ile çalışmaya başlamak için, IronPDF NuGet paketini yüklemeniz gerekecek. Bunu IronPDF belgelerindeki talimatları takip ederek yapabilirsiniz.

IronPDF ve foreach ile PDF Raporu Oluşturma

Bu örnekte, IronPDF kütüphanesini ve foreach döngüsünü kullanarak, adları ve fiyatları içeren bir ürün listesi PDF raporu oluşturacağız.

Öncelikle ürünleri temsil etmek için basit bir Product sınıfı oluşturalım:

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }

    public Product(string name, decimal price)
    {
        Name = name;
        Price = price;
    }
}
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }

    public Product(string name, decimal price)
    {
        Name = name;
        Price = price;
    }
}
Public Class Product
	Public Property Name() As String
	Public Property Price() As Decimal

	Public Sub New(ByVal name As String, ByVal price As Decimal)
		Me.Name = name
		Me.Price = price
	End Sub
End Class
$vbLabelText   $csharpLabel

Ardından, PDF raporunu oluşturmak için Product nesnelerinden oluşan bir liste oluşturalım:

List<Product> products = new List<Product>
{
    new Product("Product A", 29.99m),
    new Product("Product B", 49.99m),
    new Product("Product C", 19.99m),
};
List<Product> products = new List<Product>
{
    new Product("Product A", 29.99m),
    new Product("Product B", 49.99m),
    new Product("Product C", 19.99m),
};
Dim products As New List(Of Product) From {
	New Product("Product A", 29.99D),
	New Product("Product B", 49.99D),
	New Product("Product C", 19.99D)
}
$vbLabelText   $csharpLabel

Artık ürün bilgilerini içeren bir PDF raporu oluşturmak için IronPDF ve foreach döngüsünü kullanabiliriz:

using System;
using System.Collections.Generic;
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a list of products
        List<Product> products = new List<Product>
        {
            new Product("Product A", 29.99m),
            new Product("Product B", 49.99m),
            new Product("Product C", 19.99m),
        };

        // Initialize an HTML string to store the report content
        string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";

        // Iterate through the list of products using foreach loop
        foreach (var product in products)
        {
            // Add product information to the HTML report
            htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
        }

        // Close the table tag in the HTML report
        htmlReport += "</table>";

        // Create a new instance of the HtmlToPdf class
        var htmlToPdf = new ChromePdfRenderer();

        // Generate the PDF from the HTML report
        var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);

        // Save the PDF to a file
        PDF.SaveAs("ProductReport.PDF");

        // Inform the user that the PDF has been generated
        Console.WriteLine("ProductReport.PDF has been generated.");
    }
}
using System;
using System.Collections.Generic;
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a list of products
        List<Product> products = new List<Product>
        {
            new Product("Product A", 29.99m),
            new Product("Product B", 49.99m),
            new Product("Product C", 19.99m),
        };

        // Initialize an HTML string to store the report content
        string htmlReport = "<table><tr><th>Product Name</th><th>Price</th></tr>";

        // Iterate through the list of products using foreach loop
        foreach (var product in products)
        {
            // Add product information to the HTML report
            htmlReport += $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>";
        }

        // Close the table tag in the HTML report
        htmlReport += "</table>";

        // Create a new instance of the HtmlToPdf class
        var htmlToPdf = new ChromePdfRenderer();

        // Generate the PDF from the HTML report
        var PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport);

        // Save the PDF to a file
        PDF.SaveAs("ProductReport.PDF");

        // Inform the user that the PDF has been generated
        Console.WriteLine("ProductReport.PDF has been generated.");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Create a list of products
		Dim products As New List(Of Product) From {
			New Product("Product A", 29.99D),
			New Product("Product B", 49.99D),
			New Product("Product C", 19.99D)
		}

		' Initialize an HTML string to store the report content
		Dim htmlReport As String = "<table><tr><th>Product Name</th><th>Price</th></tr>"

		' Iterate through the list of products using foreach loop
		For Each product In products
			' Add product information to the HTML report
			htmlReport &= $"<tr><td>{product.Name}</td><td>${product.Price}</td></tr>"
		Next product

		' Close the table tag in the HTML report
		htmlReport &= "</table>"

		' Create a new instance of the HtmlToPdf class
		Dim htmlToPdf = New ChromePdfRenderer()

		' Generate the PDF from the HTML report
		Dim PDF = htmlToPdf.RenderHtmlAsPdf(htmlReport)

		' Save the PDF to a file
		PDF.SaveAs("ProductReport.PDF")

		' Inform the user that the PDF has been generated
		Console.WriteLine("ProductReport.PDF has been generated.")
	End Sub
End Class
$vbLabelText   $csharpLabel

C# For Each (Geliştiriciler İçin Nasıl Çalışır) Şekil 1 - Çıktı Sonucu

Sonuç

Bu eğitim boyunca, "C# foreach" döngüsünün temellerini, önemini, kullanım durumlarını ve kodunuza nasıl uygulayacağınızı inceledik. Ayrıca, C#'deki PDF dosyaları ile çalışma konusunda güçlü bir kütüphane olan IronPDF'yi tanıttık ve veri koleksiyonuna dayalı bir PDF raporu oluşturmak için foreach döngüsünü IronPDF ile nasıl kullanacağımızı gösterdik.

Öğrenmeye ve becerilerinizi geliştirmeye devam edin, yakında foreach döngüsünün ve diğer C# özelliklerinin tam potansiyelini kullanarak sağlam ve verimli uygulamalar yaratabileceksiniz. IronPDF, kütüphaneyi test etmek için ücretsiz bir deneme sunuyor. Satın almaya karar verirseniz, IronPDF lisansı $999'den başlar.

Sıkça Sorulan Sorular

C# foreach döngüsü nedir?

C# foreach döngüsü, diziler, listeler ve sözlükler gibi koleksiyonlar üzerinde yineleme sürecini basitleştiren bir programlama yapısıdır. Geliştiricilerin bir koleksiyon içerisindeki her öğe üzerinde işlem yapmasını, dizin veya sayılarla uğraşmadan, kısaca ve okunabilir bir şekilde sağlar.

C#'ta foreach döngüsü kullanarak PDF raporu nasıl oluşturabilirsiniz?

IronPDF ile kombinasyon halinde foreach döngüsünü kullanarak PDF raporları oluşturabilirsiniz. Ürün listesi gibi bir veri koleksiyonu üzerinden yineleme yaparak dinamik olarak bir HTML rapor dizesi oluşturabilir ve ardından IronPDF'in ChromePdfRenderer ini kullanarak bunu PDF'ye dönüştürebilirsiniz.

C# foreach döngüsü için kullanım durumları nelerdir?

Foreach döngüsü için yaygın kullanım durumları arasında bir koleksiyondaki değerlerin toplanması, bir öğenin aranması, elementlerin değiştirilmesi ve bir koleksiyonun her bir elemanı üzerinde işlem yapılması yer alır.

C#'ta foreach döngüsü for döngüsünden nasıl farklıdır?

Foreach döngüsü okunabilirliği ve sadeliği nedeniyle tercih edilir. For döngüsünden farklı olarak, koleksiyonun dizinini veya sayısını manuel olarak yönetmeyi gerektirmez. Foreach döngüsü, yalnızca okuma yönelik yinelemeler için en iyi şekilde kullanılır.

Foreach döngüsü ile var anahtar kelimesi nasıl kullanılır?

Foreach döngüsünde var anahtar kelimesini kullanarak, derleyicinin koleksiyon içerisindeki elemanların veri türünü çıkarmasına izin verebilirsiniz, bu da kodu daha kısaltır ve bakımı daha kolay hale getirir.

Foreach döngüsü kullanırken bir koleksiyon değiştirilebilir mi?

Foreach döngüsü, yineleme sırasında bir koleksiyonu değiştirmek için uygun değildir, çünkü bu, potansiyel çalışma zamanı hatalarına yol açabilir. Değişiklik gerekiyorsa, bir for döngüsü kullanmayı veya yeni bir değiştirilmiş koleksiyon oluşturmayı düşünün.

C#'ta foreach döngüsü kullanarak sözlük yinelemeleri nasıl işlenir?

C#'ta, sözlükler üzerinde foreach döngüsü kullanarak, hem anahtarlara hem de değerlere etkin bir şekilde erişmek için KeyValuePair yapısını kullanarak yineleme yapabilirsiniz.

Foreach döngüsü hangi tür koleksiyonlar üzerinde yineleme yapabilir?

Foreach döngüsü, IEnumerable veya IEnumerable arayüzünü uygulayan herhangi bir koleksiyon üzerinden yineleme yapabilir. Bu, C#'ta diziler, listeler, sözlükler ve diğer koleksiyon türlerini içerir.

C#'ta foreach döngüsünün söz dizimi nedir?

C#'ta foreach döngüsünün söz dizimi: foreach (variableType variableName in collection) { // Her öğe için çalıştırılacak kod } şeklindedir, burada variableType veri türü, variableName döngü değişkeni ve collection üzerinde yineleme yapılan koleksiyondur.

C# projesine bir PDF kütüphanesi nasıl kurarsınız?

IronPDF, IronPDF NuGet paketi eklenerek bir C# projesine kurulabilir. Kurulum talimatları IronPDF dokümantasyonunda mevcuttur.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara