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

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

Bu eğitimde, "C# foreach" döngüsü, geliştiriciler için vazgeçilmez bir aracı kapsayacağız. foreach döngüsü, bir koleksiyon üzerinde yineleme yapmayı daha kolay hale getirir ve her öğede işlem yapmayı, altyapı detaylarına takılmadan basitleştirir. foreach önemini, kullanım senaryolarını ve nasıl C# kodunuza entegre edeceğinizi tartışacağız.

foreach Döngüsüne Giriş

foreach döngüsü, geliştiriciler için koleksiyonlar üzerinde özlü ve okunabilir bir şekilde yineleme yapmak için güçlü bir araçtır. Kodları basitleştirir ve hataları azaltır, çünkü koleksiyon öğe sayısını veya indeksini manuel olarak yönetme gerekli değildir. Okunabilirlik ve basitlik açısından, foreach döngüsü genellikle geleneksel for döngüsüne tercih edilir.

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

  • Bir koleksiyondaki değerleri toplama
  • Bir koleksiyonda bazı öğeleri arama
  • Bir koleksiyondaki öğeleri değiştirme
  • Bir koleksiyondaki her bir öğe üzerinde işlemler yapma

Koleksiyonları Anlama

C'da bir grup öğeyi tek bir nesnede saklamak için kullanılan farklı koleksiyon tipleri vardır. Bunlar diziler, listeler, sözlükler ve daha fazlasını içerir. foreach döngüsü, IEnumerable veya IEnumerable<t> arayüzünü uygulayan herhangi bir koleksiyonla kullanılabilecek kullanışlı bir araçtır.

Bazı yaygın koleksiyon tipleri şunlardır:

  • Diziler: Aynı veri türüne sahip elemanların sabit boyutlu bir koleksiyonu.
  • Listeler: Aynı veri türüne sahip elamanların dinamik bir koleksiyonu.
  • Sözlükler: Her bir anahtarın benzersiz olduğu anahtar-değer çiftleri koleksiyonu.

System.Collections.Generic ad alanı, koleksiyonlarla çalışmak için çeşitli türler içerir.

C#'ta foreach Deyimini Uygulama

Artık koleksiyonlar ve foreach döngüsü hakkında temel bir anlayışa sahibiz, C#'ta nasıl çalıştığını görmek için sözdizimine bir göz atalım.

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 isimdir ve collection üzerinde yineleme yapmak istediğiniz koleksiyona atıfta bulunur.

Örnek

Bir tam sayı listesine sahip olduğumuz ve listedeki tüm öğelerin toplamını bulmak istediğimiz bir örneği ele alalım.

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 tam sayı listesi oluşturur ve elemanların toplamını saklamak için sum değişkenini başlatırız. Sonra, foreach döngüsünü kullanarak listede yineleme yapar ve her elemanın değerini toplama ekleriz. Son olarak, toplamı konsola yazdırıyoruz. Bu yöntem, benzer şekilde diğer koleksiyonlar üzerinde çalışmak veya yazdırmak için de uygulanabilir.

Varyasyonlar ve En İyi Uygulamalar

Artık foreach döngüsünü nasıl kullanacağımız hakkında temel bir anlayışa sahibiz, bazı varyasyonlar ve en iyi uygulamalar hakkında konuşalım.

Salt Okunur Yineleme: foreach döngüsü, salt okunur yineleme için en uygun olanıdır, çünkü yineleme sırasında koleksiyonu değiştirmek beklenmedik sonuçlara veya çalışma zamanı hatalarına yol açabilir. Eğer yineleme sırasında koleksiyonu değiştirmeniz gerekiyorsa, geleneksel bir for döngüsü kullanmayı veya istenen değişikliklerle yeni bir koleksiyon oluşturmayı dikkate alın.

var anahtar kelimesini kullanma: Koleksiyondaki elemanların veri türünü açıkça belirtmek yerine, veri türünü derleyicinin çıkarmasına izin vermek için var anahtar kelimesini kullanabilirsiniz. Bu, kodu daha özlü ve bakımı daha 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 üzerinden yineleme: Sözlükler üzerinden yineleme yapmak için foreach döngüsü kullanırken, KeyValuePair yapısıyla çalışmanız gerekecektir. Bu yapı, bir sözlükteki 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#'ta daha açıklayıcı bir şekilde veri sorgulamak ve işlemek için güçlü bir özelliktir. LINQ'u foreach döngüsüyle birlikte kullanarak daha ifade edilebilir ve verimli kodlar oluşturabilirsiniz.

Ö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 Eklemek

Bu bölümde, C# 'foreach' döngüsü üzerindeki eğitimimize, C#'da PDF dosyalarıyla çalışmak için popüler bir kütüphane olan IronPDF'i ekleyerek devam edeceğiz. foreach döngüsünü IronPDF ile birlikte kullanarak bir veri koleksiyonuna dayalı olarak PDF raporu nasıl oluşturulacağını göstereceğiz.

IronPDF Tanıtımı

IronPDF, C#'da PDF dosyaları oluşturmak, düzenlemek ve içeriği çıkarmak için güçlü bir kütüphanedir. PDF belgeleriyle çalışmak için kullanımı kolay bir API sunar ve uygulamalarınıza PDF işlevselliği entegre etmesi gereken geliştiriciler için mükemmel bir seçimdir.

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

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

IronPDF Kurulumu

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

IronPDF ile PDF Raporu Oluşturma ve foreach

Bu örnekte, IronPDF kütüphanesi ve foreach döngüsünü kullanarak adları ve fiyatları dahil bir ürün listesi için bir 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

Sonra, PDF raporu oluşturmak için Product nesnelerinin bir listesini 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

Şimdi, ü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 temelleri, önemi, kullanım alanları ve kodunuzda nasıl uygulanacağı üzerinde durduk. Ayrıca C#'ta PDF dosyalarıyla çalışmak için güçlü bir kütüphane olan IronPDF'yi tanıttık ve IronPDF ile veri koleksiyonlarına dayalı olarak PDF raporu oluşturmayı foreach döngüsü ile birlikte nasıl yapacağını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 oluşturabileceksiniz. IronPDF, kütüphaneyi test etmek için ücretsiz bir deneme sunar. Satın almaya karar verirseniz, IronPDF lisansı $799'dan başlıyor.

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 gezinme sürecini basitleştiren bir programlama yapısıdır. Geliştiricilerin, indeks veya sayıları yönetmeden, bir koleksiyondaki her öğe üzerinde işlemler gerçekleştirmesine olanak tanır.

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

IronPDF ile kombinasyon halinde foreach döngüsü kullanarak PDF raporları oluşturabilirsiniz. Örneğin bir ürün listesi gibi bir veri koleksiyonu boyunca yineleme yaparak, dinamik 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ı, bir koleksiyondaki değerlerin toplanması, bir öğenin aranması, elemanların değiştirilmesi ve bir koleksiyonun her bir elemanı üzerinde işlemler yapılmasını içerir.

C#'da foreach döngüsü ile for döngüsü arasındaki farklar nelerdir?

Foreach döngüsü, okunabilirliği ve basitliği nedeniyle tercih edilir. For döngüsünün aksine, koleksiyonun indeksini veya sayısını manuel olarak yönetmeyi gerektirmez. Foreach döngüsü, yalnızca okumalı yinelemeler için en iyi kullanılır.

C#'da foreach döngüsü ile var anahtar kelimesini nasıl kullanırsınız?

Foreach döngüsünde var anahtar kelimesini kullanarak, derleyicinin koleksiyon içindeki elemanların veri türünü çıkarmasına izin vererek, kodu daha kısa ve bakımı daha kolay hale getirebilirsiniz.

Foreach döngüsü kullanırken bir koleksiyonu değiştirebilir misiniz?

Foreach döngüsü, olası çalışma zamanı hataları nedeniyle yineleme sırasında bir koleksiyonu değiştirmek için uygun değildir. Eğer değiştirme gerekiyorsa, bir for döngüsü kullanmayı veya yeni bir değiştirilmiş koleksiyon oluşturmayı düşünebilirsiniz.

C#'da foreach döngüsü kullanarak sözlük yinelemelerini nasıl yönetebilirsiniz?

C#'da, `KeyValuePair` yapısını kullanarak, anahtarlar ve değerler arasında verimli bir şekilde erişmek için sözlükler üzerinde foreach döngüsü kullanarak yineleme yapabilirsiniz.

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

foreach dongusu, IEnumerable veya IEnumerable arabirimini uygulayan herhangi bir koleksiyon uzerinde yineleme yapabilir. Buna C#'taki diziler, listeler, sozlukler ve diğer koleksiyon türleri dahildir.

C#'da foreach döngüsünün sözdizimi nedir?

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

C# projesine bir PDF kütüphanesi nasıl yüklenir?

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

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

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