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

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

C#, mevcut birçok programlama dili arasında geliştiriciler için popüler ve uyarlanabilir bir seçenek haline gelmiştir. Koleksiyonlar kavramı, dilin temel avantajlarından biri olan C#'ın kapsamlı kütüphane ve çerçevelerinin merkezindedir. C#'da bir koleksiyon, verileri etkili bir şekilde depolamak ve düzenlemek için esastır. Geliştiricilere zorlu programlama problemlerini çözmek için geniş bir etkili araç yelpazesi sunarlar. Bu yazıda koleksiyonları, özellikleri, türleri ve en iyi kullanım stratejilerini daha ayrıntılı olarak inceleyeceğiz.

C# Koleksiyonları Nasıl Kullanılır

  1. Yeni bir Konsol Uygulaması projesi oluşturun.
  2. C#'da koleksiyon için bir nesne oluşturun.
  3. Birden çok nesne kümesi depolayabilen koleksiyon sınıfına değerler ekleyin.
  4. Ekleme, kaldırma, sıralama gibi değer işlemlerini gerçekleştirin.
  5. Sonucu görüntüleyin ve nesneyi yok edin.

C#: Koleksiyonları Anlamak

C#'daki koleksiyonlar, programcıların nesne sınıflarının kümeleriyle çalışmalarına ve bunları saklamalarına olanak tanıyan kaplardır. Bu nesneler, birçok programlama ortamına esnek ve uyarlanabilir olup, aynı veya farklı türlerde olabilir. Çoğu koleksiyon sınıfı, C#'da System ad alanı bileşenlerini uygular, bu da System.Collections ve System.Collections.Generic gibi ad alanlarını içe aktarmayı mümkün kılar, ki bunlar hem jenerik hem de jenerik olmayan çeşitli koleksiyon sınıflarını sunar. Koleksiyonlar ayrıca dinamik bellek ayırma, ekleme, arama ve koleksiyon sınıfları içinde öğeleri sıralama işlemlerine izin verir.

Jenerik Olmayan Koleksiyon Türleri

ArrayList, Hashtable ve Queue, C#'daki mevcut olan jenerik olmayan ilk dil sürümleriyle beraber gelen koleksiyon sınıflarından birkaçıdır. Bu koleksiyonlar, korumak ve çalışmak istediğiniz şeylerin türlerini açıkça tanımlamanıza alternatif sunar. Ancak, geliştiriciler genellikle üstün performansları ve tür güvenlikleri nedeniyle jenerik koleksiyonları tercih eder.

Jenerik Koleksiyonlar

C#'ın sonraki sürümleri, jenerik olmayan koleksiyonların dezavantajlarını aşmak için jenerik koleksiyonları içermektedir. Derleme sırasında tür güvenliği sağlarlar ve geliştiricilerin sıkı türlenmiş verilerle ilgilenmelerine olanak tanır. Yaygın olarak kullanılan genel koleksiyon sınıflarından bazıları List, Dictionary<TKey, TValue>, Queue ve Stack'dir. Daha iyi performans ve derleme zamanı tür doğrulaması sağladıkları için modern C# geliştirmesinde tercih edilen bir seçenektir.

Önemli C# Koleksiyon Türleri

1. List

Hızlı ve kolay şekilde eleman ekleme ve kaldırmayı sağlayan dinamik bir dizi, List sınıfıdır. Bileşenleri filtreleme, arama ve işleme yolları sağladığı için boyutu değişebilir bir koleksiyon gerektiren durumlar için esnek bir seçenektir.

// Creating a list with integers and adding/removing elements
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6); // Adds element '6' to the end
numbers.Remove(3); // Removes the first occurrence of the element '3'
// Creating a list with integers and adding/removing elements
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6); // Adds element '6' to the end
numbers.Remove(3); // Removes the first occurrence of the element '3'
' Creating a list with integers and adding/removing elements
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
numbers.Add(6) ' Adds element '6' to the end
numbers.Remove(3) ' Removes the first occurrence of the element '3'
$vbLabelText   $csharpLabel

2. Dictionary<TKey, TValue>

Hızlı arama hızlarıyla bir anahtar-değer çiftleri koleksiyonu Dictionary<TKey, TValue> sınıfı tarafından temsil edilir. Verilere benzersiz bir anahtar değer üzerinden hızlı erişimin önemli olduğu durumlarda sıkça kullanılır. Bu anahtar, sözlük içindeki öğelere erişmek için kullanılır.

// Creating a dictionary mapping names to ages
Dictionary<string, int> ageMap = new Dictionary<string, int>();
ageMap.Add("John", 25); // The string "John" is the key that can access the value 25
ageMap["Jane"] = 30; // Setting the key "Jane" to hold the value 30
// Creating a dictionary mapping names to ages
Dictionary<string, int> ageMap = new Dictionary<string, int>();
ageMap.Add("John", 25); // The string "John" is the key that can access the value 25
ageMap["Jane"] = 30; // Setting the key "Jane" to hold the value 30
' Creating a dictionary mapping names to ages
Dim ageMap As New Dictionary(Of String, Integer)()
ageMap.Add("John", 25) ' The string "John" is the key that can access the value 25
ageMap("Jane") = 30 ' Setting the key "Jane" to hold the value 30
$vbLabelText   $csharpLabel

3. Queue ve Stack

Birinci giren, ilk çıkar (FIFO) ve son giren, ilk çıkar (LIFO) desteklerini sırasıyla genel Queue ve genel Stack sınıfları uygular. Uygulamanın ihtiyaçlarına göre belirli bir sıraya göre öğeleri yönetmek için kullanılabilirler.

// Creating and manipulating a queue
Queue<string> tasks = new Queue<string>(); 
tasks.Enqueue("Task 1"); // Adding to the queue
tasks.Enqueue("Task 2");

// Creating and manipulating a stack
Stack<double> numbers = new Stack<double>();
numbers.Push(3.14); // Adding to the stack
numbers.Push(2.71);
// Creating and manipulating a queue
Queue<string> tasks = new Queue<string>(); 
tasks.Enqueue("Task 1"); // Adding to the queue
tasks.Enqueue("Task 2");

// Creating and manipulating a stack
Stack<double> numbers = new Stack<double>();
numbers.Push(3.14); // Adding to the stack
numbers.Push(2.71);
' Creating and manipulating a queue
Dim tasks As New Queue(Of String)()
tasks.Enqueue("Task 1") ' Adding to the queue
tasks.Enqueue("Task 2")

' Creating and manipulating a stack
Dim numbers As New Stack(Of Double)()
numbers.Push(3.14) ' Adding to the stack
numbers.Push(2.71)
$vbLabelText   $csharpLabel

4. HashSet

Sırasız bir koleksiyonda düzenlenmiş benzersiz ürünleri HashSet sınıfı temsil eder. Fark, birleşim ve kesişim gibi küme işlemlerini gerçekleştirmek için etkili yollar sunar.

// Creating hashsets and performing a union operation
HashSet<int> setA = new HashSet<int> { 1, 2, 3, 4 };
HashSet<int> setB = new HashSet<int> { 3, 4, 5, 6 };
HashSet<int> unionSet = new HashSet<int>(setA);
unionSet.UnionWith(setB); // Combining setA and setB
// Creating hashsets and performing a union operation
HashSet<int> setA = new HashSet<int> { 1, 2, 3, 4 };
HashSet<int> setB = new HashSet<int> { 3, 4, 5, 6 };
HashSet<int> unionSet = new HashSet<int>(setA);
unionSet.UnionWith(setB); // Combining setA and setB
' Creating hashsets and performing a union operation
Dim setA As New HashSet(Of Integer) From {1, 2, 3, 4}
Dim setB As New HashSet(Of Integer) From {3, 4, 5, 6}
Dim unionSet As New HashSet(Of Integer)(setA)
unionSet.UnionWith(setB) ' Combining setA and setB
$vbLabelText   $csharpLabel

IronPDF

C# Koleksiyonu (Geliştiriciler için Nasıl Çalışır): Şekil 1 - IronPDF web sayfası

IronPDF adlı C# kütüphanesi, .NET uygulamalarında PDF belgeleri oluşturmayı, düzenlemeyi ve görüntülemeyi kolaylaştırır. Çapraz platform uyumluluğu, yüksek kaliteli render ve HTML'den PDF'ye dönüştürme gibi birçok lisanslama seçeneği sunar. IronPDF'in kullanıcı dostu API'si, PDF'lerle çalışmayı daha kolay hale getirir ve böylece bu da C# geliştiricileri için değerli bir araç yapar.

IronPDF'in öne çıkan özelliği, tüm düzenleri ve stilleri koruyarak güçlü HTML'den PDF'ye dönüştürme yeteneğidir. Bu, web içeriğinden PDF'ler ürettiği için raporlar, faturalar ve dokümantasyon için mükemmeldir. HTML dosyaları, URL'ler ve HTML dizgeleri zahmetsizce PDF'lere dönüştürülebilir.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF'in temel özellikleri şunlardır:

  • HTML'yi PDF'ye Dönüştürme: IronPDF ile, programcılar CSS ve JavaScript dahil olmak üzere HTML metninden PDF belgeleri oluşturabilir. Bu, web geliştirme araçlarına aşina olan ve HTML ve CSS'yi kullanarak PDF oluşturmak isteyenler için özellikle kullanışlıdır.
  • PDF Üretimi ve Manipülasyonu: Kütüphane, sıfırdan programlı olarak PDF belgeleri oluşturma yeteneği sağlar. Ayrıca, metin çıkarma, filigran ekleme, PDFleri bölme gibi işlemleri mümkün kılarak mevcut PDFleri düzenlemeyi sağlar.
  • Üstün Render: IronPDF, nihai belgelerin netliğini ve görsel bütünlüğünü koruyarak en yüksek kalibrede PDF çıktısı oluşturmak için bir render motoru kullanır.
  • Çapraz Platform Uyumluluğu: IronPDF hem .NET Core hem de .NET Framework ile çalışacak şekilde tasarlanmıştır, böylece çeşitli uygulamalarda ve birçok platformda kullanılabilir.
  • Performans Optimizasyonu: Büyük veya karmaşık PDF belgeleriyle çalışılırken bile, kütüphane etkili PDF üretimi ve renderi sağlamak için tasarlanmıştır.

IronPDF belgelerine daha fazla bilgi için, IronPDF Belgeleri başvurun.

IronPDF'in Kurulumu

IronPDF kütüphanesini öncelikle Paket Yönetici Konsolu veya NuGet Paket Yöneticisi ile kurun:

Install-Package IronPdf

C# Koleksiyonu (Geliştiriciler için Nasıl Çalışır): Şekil 2 - IronPDF'nin Paket Yöneticisi Konsolu ile kurulumu

"IronPDF" paketini aramak için NuGet Paket Yöneticisi'ni kullanmak bir diğer seçenektir. IronPDF ile ilgili olan tüm NuGet paketlerini bu listeden seçip indiriyoruz.

C# Koleksiyonu (Geliştiriciler için Nasıl Çalışır): Şekil 3 - IronPDF'nin NuGet Paket Yöneticisi ile kurulumu

Koleksiyonlar ile IronPDF Kullanarak Belge Oluşturma

IronPDF ile arayüze girmeden önce veri yapıları ve organizasyonda koleksiyonların oynadığı rolü anlamak önemlidir. Geliştiriciler koleksiyonlar kullanarak organize bir biçimde şeylerin gruplarını saklayabilir, alabilir ve değiştirebilir. List, Dictionary<TKey, TValue> ve HashSet gibi pek çok farklı tür mevcutken, geliştiriciler ihtiyaçlarına en uygun koleksiyonu seçebilir.

Bir satış işlemleri listesi ile bir rapor oluşturmanız gerektiğini hayal edin. Veriler, daha fazla işleme ve gösterme için bir temel olarak hizmet veren List kullanılarak verimli bir şekilde organize edilebilir.

// Define the Transaction class
public class Transaction
{
    public string ProductName { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

// Create a list of transactions
List<Transaction> transactions = new List<Transaction>
{
    new Transaction { ProductName = "Product A", Amount = 100.50m, Date = DateTime.Now.AddDays(-2) },
    new Transaction { ProductName = "Product B", Amount = 75.20m, Date = DateTime.Now.AddDays(-1) },
    // Add more transactions as needed
};
// Define the Transaction class
public class Transaction
{
    public string ProductName { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

// Create a list of transactions
List<Transaction> transactions = new List<Transaction>
{
    new Transaction { ProductName = "Product A", Amount = 100.50m, Date = DateTime.Now.AddDays(-2) },
    new Transaction { ProductName = "Product B", Amount = 75.20m, Date = DateTime.Now.AddDays(-1) },
    // Add more transactions as needed
};
' Define the Transaction class
Public Class Transaction
	Public Property ProductName() As String
	Public Property Amount() As Decimal
	Public Property [Date]() As DateTime
End Class

' Create a list of transactions
Private transactions As New List(Of Transaction) From {
	New Transaction With {
		.ProductName = "Product A",
		.Amount = 100.50D,
		.Date = DateTime.Now.AddDays(-2)
	},
	New Transaction With {
		.ProductName = "Product B",
		.Amount = 75.20D,
		.Date = DateTime.Now.AddDays(-1)
	}
}
$vbLabelText   $csharpLabel

PDF'de, her bir ürün adı, işlem miktarı ve tarihini listeleyen basit bir tablo oluşturacağız.

using IronPdf;

// Create a PDF document renderer
var pdfDocument = new HtmlToPdf();

// HTML content with a table populated by data from the 'transactions' list
string htmlContent = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>";
foreach (var transaction in transactions)
{
    htmlContent += $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>";
}
htmlContent += "</table>";

// Convert HTML to PDF
PdfDocument pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

// Specify the file path to save the PDF
string pdfFilePath = "transactions_report.pdf";
pdf.SaveAs(pdfFilePath);
using IronPdf;

// Create a PDF document renderer
var pdfDocument = new HtmlToPdf();

// HTML content with a table populated by data from the 'transactions' list
string htmlContent = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>";
foreach (var transaction in transactions)
{
    htmlContent += $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>";
}
htmlContent += "</table>";

// Convert HTML to PDF
PdfDocument pdf = pdfDocument.RenderHtmlAsPdf(htmlContent);

// Specify the file path to save the PDF
string pdfFilePath = "transactions_report.pdf";
pdf.SaveAs(pdfFilePath);
Imports IronPdf

' Create a PDF document renderer
Private pdfDocument = New HtmlToPdf()

' HTML content with a table populated by data from the 'transactions' list
Private htmlContent As String = "<table><tr><th>Product Name</th><th>Amount</th><th>Date</th></tr>"
For Each transaction In transactions
	htmlContent &= $"<tr><td>{transaction.ProductName}</td><td>{transaction.Amount}</td><td>{transaction.Date.ToShortDateString()}</td></tr>"
Next transaction
htmlContent &= "</table>"

' Convert HTML to PDF
Dim pdf As PdfDocument = pdfDocument.RenderHtmlAsPdf(htmlContent)

' Specify the file path to save the PDF
Dim pdfFilePath As String = "transactions_report.pdf"
pdf.SaveAs(pdfFilePath)
$vbLabelText   $csharpLabel

Geliştiriciler, üretilen PDF belgesini diske kaydetme veya kullanıcıya gösterme seçeneğine sahiptir. IronPDF, tarayıcı akışı, dosya kaydetme ve bulut depolama entegrasyonu gibi birkaç çıktı seçeneği sunar.

C# Koleksiyonu (Geliştiriciler için Nasıl Çalışır): Şekil 4 - Önceki koddan çıkartılan PDF

Yukarıdaki ekran, yukarıdaki koddan üretilmiş çıktıyı gösterir. Kod hakkında daha fazla bilgi edinmek için HTML Kullanarak PDF Oluşturma Örneği başvurun.

Sonuç

Koleksiyonları IronPDF ile birleştirmek, dinamik belge üretimi için çok olanak sağlar. Geliştiriciler, koleksiyonları kullanarak verileri etkili bir şekilde yönetebilir ve organize edebilir, IronPDF ise görsel olarak çekici PDF belgeleri oluşturmayı kolaylaştırır. IronPDF ve koleksiyonların birleşik gücü, C# uygulamalarında dinamik içerik üretimi için güvenilir ve uyarlanabilir bir çözüm sunar, belgeniz ister fatura, ister rapor veya başka bir şey olsun.

IronPDF'nin $999 Lite sürümü, bir yıllık yazılım desteği, yükseltme seçenekleri ve süresiz bir lisans içerir. Kullanıcılara, filigranlı deneme süresi sırasında gerçek dünya koşullarında ürünü değerlendirme fırsatı da verir. IronPDF'in fiyat, lisanslama ve ücretsiz denemesi hakkında daha fazla bilgi için, IronPDF Lisanslama Bilgileri başvurun. Iron Software hakkında daha fazla bilgi için, Iron Software Web Sitesi ziyaret edin.

Sıkça Sorulan Sorular

C#'de koleksiyonlar nelerdir ve neden önemlidirler?

C#'deki koleksiyonlar, verilerin depolanması ve düzenlenmesi için hayati önem taşır, geliştiricilere karmaşık programlama zorluklarını verimli bir şekilde çözmek için araçlar sunar. Dinamik bellek tahsisi ve veri kümelerinin kolayca işlenmesine olanak tanırlar.

C#'de, generik olmayan ve generik koleksiyonlar arasındaki farklar nelerdir?

Genel olmayan koleksiyonlar, ArrayList ve Hashtable gibi, daha az tür güvenliğine sahip olup herhangi bir nesne türünü depolayabilir. List ve Dictionary gibi genel koleksiyonlar, veri türü tutarlılığını zorlayarak tür güvenliği ve geliştirilmiş performans sağlar.

C#'de bir generik liste nasıl oluşturulabilir?

C#'da bir genel liste, List sınıfı kullanılarak oluşturulabilir. Örneğin, tamsayıların bir listesi List numbers = new List { 1, 2, 3 }; şeklinde oluşturulabilir.

HTML'yi C# içerisinde PDF'ye nasıl dönüştürebilirim?

IronPDF'in RenderHtmlAsPdf yöntemini kullanarak HTML dizgilerini PDF'lere dönüştürebilirsiniz. Ayrıca HTML dosyalarını ve URL'leri PDF belgelerine dönüştürmeyi destekler, düzen ve stil bütünlüğünü korur.

C#'de koleksiyonları kullanmak için en iyi uygulamalar nelerdir?

C#'da koleksiyonları kullanmak için en iyi uygulamalar arasında ihtiyaçlarınıza uygun doğru koleksiyon türünü seçmek, örneğin anahtar-değer çiftleri için Dictionary ve sıralı listeler için List kullanmak ve koleksiyonlara artık ihtiyaç duyulmadığında onları ortadan kaldırarak uygun bellek yönetimini sağlamak yer alır.

Koleksiyonlar, C# uygulamalarında PDF oluşturmayı nasıl geliştirebilir?

Koleksiyonlar, belge oluşturmak için verileri verimli bir şekilde organize edebilir. Örneğin, satış verilerini derlemek için bir List kullanmak, IronPDF kullanılarak kapsamlı PDF raporlarının oluşturulmasını kolaylaştırabilir, veri yönetimi ve sunumunu koordine edebilir.

IronPDF için hangi lisans seçenekleri mevcuttur?

IronPDF, bir yıllık destek ve güncelleme içeren Lite lisans sunar ve değerlendirme amacıyla bir filigranlı deneme sürümü sağlar. Bu seçenekler, geliştiricilerin IronPDF'in yeteneklerini projelerinde test etmelerine ve uygulamalarına olanak tanır.

.NET projesine IronPDF nasıl yüklenir?

IronPDF'i bir .NET projesine NuGet Paket Yöneticisi ile Install-Package IronPdf komutunu kullanarak kurabilirsiniz. Alternatif olarak, NuGet Paket Yöneticisi'nde 'IronPDF' aratarak projeye ekleyebilirsiniz.

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