C# IList (Geliştiriciler için Nasıl Çalışır)
IList'e Giris
IList, .NET Framework'in Collections ad alanının bir parçasıdır. Indexleriyle bireysel olarak erişilebilecek nesnelerden oluşan bir koleksiyon için taslak sağlayan jenerik olmayan bir koleksiyon arayüzüdür. Dizilerden farklı olarak, IList, nesne değer elemanlarının dinamik bir sayısını destekler, bu da gerektiğinde koleksiyondan eleman ekleyip çıkarmanıza olanak tanır. .NET Framework'teki tüm jenerik olmayan listelerin temel arayüzü olarak hizmet verir ve dizilerden daha esnek bir şekilde nesne koleksiyonu yönetmenin bir yolunu sunar. Bu eğitimde, IList arayüzünü ve IronPDF C# PDF Kutuphanesini öğreneceğiz.
IList Arayüzünü Anlamak
public interface IList bildirimi, .NET Framework'in Collections ad alanında belirtilen IList sözleşmesine uyan C#'da özel koleksiyonlar oluşturmanın temel bir parçasıdır. IList, koleksiyondaki elemanlara erişim, onları sayma ve ekleme, yerleştirme veya kaldırma yoluyla koleksiyonu değiştirme gibi özellikler ve yöntemler içerir. İşte IList arayüzünde tanımlanan bazı ana özellikler ve yöntemler:
IsFixedSizeveIsReadOnlygibi özellikler, koleksiyonun sırasıyla sabit boyutlu veya salt okunur olup olmadığını bildirir.Add,Insert,RemoveveRemoveAtgibi yöntemler, koleksiyondaki elemanları değiştirmek için kullanılır. Öğeler ekleyebilir, yerleştirebilir ve çıkarabilirsiniz.IndexOfyöntemi, elemanları bulmak için kullanılır veItemözelliği (veya C#'da dizinleyici), elemanların indeksine göre getirilip ayarlanmasına olanak tanır.
IList Arayüzünün Pratik Kullanımı
IList'un nasıl çalıştığını göstermek için basit bir örnek oluşturalım. Bu örnek, bir IList'u nasıl bildireceğinizi, öğeler ekleyeceğinizi ve içeriğini nasıl yineleyeceğinizi gösterecek.
IList'i Oluşturmak ve Değiştirmek
İlk olarak, bir IList nasıl bildirilir ve öğe eklenir, bakalım:
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
// Creating an IList instance
IList myIList = new ArrayList();
// Adding elements to the IList
myIList.Add("Hello");
myIList.Add(10);
myIList.Add(new object());
// Displaying the number of values in the IList using the Count property
Console.WriteLine($"Number of elements: {myIList.Count}");
// Accessing elements using a loop
foreach (var element in myIList)
{
Console.WriteLine(element);
}
}
}
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
// Creating an IList instance
IList myIList = new ArrayList();
// Adding elements to the IList
myIList.Add("Hello");
myIList.Add(10);
myIList.Add(new object());
// Displaying the number of values in the IList using the Count property
Console.WriteLine($"Number of elements: {myIList.Count}");
// Accessing elements using a loop
foreach (var element in myIList)
{
Console.WriteLine(element);
}
}
}
Imports System
Imports System.Collections
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Creating an IList instance
Dim myIList As IList = New ArrayList()
' Adding elements to the IList
myIList.Add("Hello")
myIList.Add(10)
myIList.Add(New Object())
' Displaying the number of values in the IList using the Count property
Console.WriteLine($"Number of elements: {myIList.Count}")
' Accessing elements using a loop
For Each element In myIList
Console.WriteLine(element)
Next element
End Sub
End Class
Yukarıdaki örnekte, IList örneğini ArrayList kullanan ve IList uygulayan bir sınıf kullanarak oluşturduk. Farklı türde nesneleri ekleyerek bir IList'ın herhangi bir nesneyi tutabileceğini göstermek istedik. Son olarak, koleksiyon üzerinde gezindik ve her bir öğeyi yazdırdık.
Dizin Tabanlı Erişim ve Değiştirme
Elemanlara indeksine göre erişmek ve bunları değiştirmek IList'in önemli bir özelliğidir. Aşağıdaki örnek, bunu nasıl yapabileceğinizi gösteriyor:
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
IList myIList = new ArrayList { "Hello", 10, new object() };
// Accessing an element by index
object value = myIList[1];
Console.WriteLine($"Element at index 1: {value}");
// Modifying an element by index
myIList[1] = 20;
Console.WriteLine($"Modified element at index 1: {myIList[1]}");
}
}
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
IList myIList = new ArrayList { "Hello", 10, new object() };
// Accessing an element by index
object value = myIList[1];
Console.WriteLine($"Element at index 1: {value}");
// Modifying an element by index
myIList[1] = 20;
Console.WriteLine($"Modified element at index 1: {myIList[1]}");
}
}
Imports System
Imports System.Collections
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim myIList As IList = New ArrayList From { "Hello", 10, New Object() }
' Accessing an element by index
Dim value As Object = myIList(1)
Console.WriteLine($"Element at index 1: {value}")
' Modifying an element by index
myIList(1) = 20
Console.WriteLine($"Modified element at index 1: {myIList(1)}")
End Sub
End Class
Özel bir IList Uygulamak
Bazen IList'i miras alan özel bir koleksiyona ihtiyaçınız olabilir. Bu, öğelerin nasıl depolandığı, erişildiği ve değiştirildiği üzerinde daha fazla kontrol sağlar. Aşağıda, IList'i uygulayan basit bir özel koleksiyon örneği bulunmaktadır:
using System;
using System.Collections;
public class CustomCollection : IList
{
private ArrayList _innerList = new ArrayList();
public object this[int index]
{
get => _innerList[index];
set => _innerList[index] = value;
}
public bool IsFixedSize => _innerList.IsFixedSize;
public bool IsReadOnly => _innerList.IsReadOnly;
public int Count => _innerList.Count;
public bool IsSynchronized => _innerList.IsSynchronized;
public object SyncRoot => _innerList.SyncRoot;
public int Add(object value)
{
return _innerList.Add(value);
}
public void Clear()
{
_innerList.Clear();
}
public bool Contains(object value)
{
return _innerList.Contains(value);
}
public int IndexOf(object value)
{
return _innerList.IndexOf(value);
}
public void Insert(int index, object value)
{
_innerList.Insert(index, value);
}
public void Remove(object value)
{
_innerList.Remove(value);
}
public void RemoveAt(int index)
{
_innerList.RemoveAt(index);
}
public void CopyTo(Array array, int index)
{
_innerList.CopyTo(array, index);
}
public IEnumerator GetEnumerator()
{
return _innerList.GetEnumerator();
}
}
using System;
using System.Collections;
public class CustomCollection : IList
{
private ArrayList _innerList = new ArrayList();
public object this[int index]
{
get => _innerList[index];
set => _innerList[index] = value;
}
public bool IsFixedSize => _innerList.IsFixedSize;
public bool IsReadOnly => _innerList.IsReadOnly;
public int Count => _innerList.Count;
public bool IsSynchronized => _innerList.IsSynchronized;
public object SyncRoot => _innerList.SyncRoot;
public int Add(object value)
{
return _innerList.Add(value);
}
public void Clear()
{
_innerList.Clear();
}
public bool Contains(object value)
{
return _innerList.Contains(value);
}
public int IndexOf(object value)
{
return _innerList.IndexOf(value);
}
public void Insert(int index, object value)
{
_innerList.Insert(index, value);
}
public void Remove(object value)
{
_innerList.Remove(value);
}
public void RemoveAt(int index)
{
_innerList.RemoveAt(index);
}
public void CopyTo(Array array, int index)
{
_innerList.CopyTo(array, index);
}
public IEnumerator GetEnumerator()
{
return _innerList.GetEnumerator();
}
}
Imports System
Imports System.Collections
Public Class CustomCollection
Implements IList
Private _innerList As New ArrayList()
Default Public Property Item(ByVal index As Integer) As Object Implements IList.Item
Get
Return _innerList(index)
End Get
Set(ByVal value As Object)
_innerList(index) = value
End Set
End Property
Public ReadOnly Property IsFixedSize() As Boolean Implements IList.IsFixedSize
Get
Return _innerList.IsFixedSize
End Get
End Property
Public ReadOnly Property IsReadOnly() As Boolean Implements IList.IsReadOnly
Get
Return _innerList.IsReadOnly
End Get
End Property
Public ReadOnly Property Count() As Integer Implements System.Collections.ICollection.Count
Get
Return _innerList.Count
End Get
End Property
Public ReadOnly Property IsSynchronized() As Boolean Implements System.Collections.ICollection.IsSynchronized
Get
Return _innerList.IsSynchronized
End Get
End Property
Public ReadOnly Property SyncRoot() As Object Implements System.Collections.ICollection.SyncRoot
Get
Return _innerList.SyncRoot
End Get
End Property
Public Function Add(ByVal value As Object) As Integer Implements IList.Add
Return _innerList.Add(value)
End Function
Public Sub Clear() Implements IList.Clear
_innerList.Clear()
End Sub
Public Function Contains(ByVal value As Object) As Boolean Implements IList.Contains
Return _innerList.Contains(value)
End Function
Public Function IndexOf(ByVal value As Object) As Integer Implements IList.IndexOf
Return _innerList.IndexOf(value)
End Function
Public Sub Insert(ByVal index As Integer, ByVal value As Object) Implements IList.Insert
_innerList.Insert(index, value)
End Sub
Public Sub Remove(ByVal value As Object) Implements IList.Remove
_innerList.Remove(value)
End Sub
Public Sub RemoveAt(ByVal index As Integer) Implements IList.RemoveAt
_innerList.RemoveAt(index)
End Sub
Public Sub CopyTo(ByVal array As Array, ByVal index As Integer) Implements System.Collections.ICollection.CopyTo
_innerList.CopyTo(array, index)
End Sub
Public Function GetEnumerator() As IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
Return _innerList.GetEnumerator()
End Function
End Class
Bu CustomCollection sınıfı, kendi başına IList uygulayan bir sınıf olan bir ArrayList'yu kapsüller. Bizim CustomCollection, alttaki ArrayList'ya çağrıları iletir, bu şekilde her IList uygulayan diğer koleksiyonlar gibi davranmasına izin verir. Bu örnek, bir indekse göre erişilebilen, değiştirilebilen (öğeler eklenebilir, yerleştirilebilir veya kaldırılabilir) ve yinelenebilir bir koleksiyon oluşturmayı gösterir, tıpkı her yerleşik .NET koleksiyonu gibi IList uygulayan.
IList ile Gelişmiş İşlemler
Temel ekleme, kaldırma ve erişim işlemlerinin ötesinde, IList daha karmaşık manipülasyonlar ve sorgular sağlar. Örneğin, bir koleksiyonun belirli bir nesneyi içerip içermediğini kontrol etmek veya koleksiyon içindeki bir nesnenin dizinini bulmak, belirli uygulamalar için hayati önem taşıyan işlemlerdir:
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
IList myIList = new ArrayList { "Hello", 10, new object() };
// Check if the IList contains a specific object
bool contains = myIList.Contains(10); // Assuming 10 was added previously
Console.WriteLine($"Contains 10: {contains}");
// Find the index of a specific object
int index = myIList.IndexOf(10);
Console.WriteLine($"Index of 10: {index}");
}
}
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
IList myIList = new ArrayList { "Hello", 10, new object() };
// Check if the IList contains a specific object
bool contains = myIList.Contains(10); // Assuming 10 was added previously
Console.WriteLine($"Contains 10: {contains}");
// Find the index of a specific object
int index = myIList.IndexOf(10);
Console.WriteLine($"Index of 10: {index}");
}
}
Imports System
Imports System.Collections
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim myIList As IList = New ArrayList From { "Hello", 10, New Object() }
' Check if the IList contains a specific object
Dim contains As Boolean = myIList.Contains(10) ' Assuming 10 was added previously
Console.WriteLine($"Contains 10: {contains}")
' Find the index of a specific object
Dim index As Integer = myIList.IndexOf(10)
Console.WriteLine($"Index of 10: {index}")
End Sub
End Class
Bu işlemler, belirli öğelerin varlığını veya konumunu, tüm koleksiyona göz atmadan belirlemeniz gerektiğinde özellikle yararlı olabilir.
IronPDF: C# PDF Kütüphanesi

IronPDF, .NET geliştiricileri için bir PDF kutuphanesidir ve .NET uygulamaları içinde doğrudan PDF belgelerini oluşturma ve yönetme olanağı sağlar. HTML'yi PDF belgesine dönüştürmeyi, resimleri ve web sayfalarını PDF'ye dönüştürmeyi destekler. Geliştiriciler, bu kutuphane ile uygulamalarına kolayca PDF işlevleri ekleyebilir. IronPDF ayrıca PDF dosyalarını düzenlemek, birleştirmek ve bölmek gibi özellikler içerir ve PDF yönetimi üzerinde kapsamlı kontrol sağlar.
HTML'den PDF'ye dönüştürmede IronPDF, özgün düzenlerin ve tarzların hassas korunmasını sağlamakta üstünlük sağlar. Web tabanlı içeriklerden, örneğin raporlar, faturalar ve belgeler gibi PDF'ler oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri desteği ile IronPDF kolaylıkla yüksek kaliteli PDF belgeler üretir.
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
Kod Örneği
İşte IronPDF ve IList arayüzünü kullanarak bir dizi dizgiden basit bir PDF belgesi oluşturmayı gösteren basit bir örnek:
using IronPdf;
using System.Collections.Generic;
public class PDFGenerator
{
public static void GeneratePDFFromList(IList<string> dataList)
{
// Initialize the HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Start building HTML content from the dataList
var htmlContent = "<h1>My Data List</h1><ul>";
foreach (var item in dataList)
{
htmlContent += $"<li>{item}</li>";
}
htmlContent += "</ul>";
// Convert HTML string to PDF
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF to a file
pdfDocument.SaveAs("DataList.pdf");
}
}
// Example usage
class Program
{
static void Main(string[] args)
{
License.LicenseKey = "License-Key";
IList<string> myDataList = new List<string> { "Apple", "Banana", "Cherry" };
PDFGenerator.GeneratePDFFromList(myDataList);
}
}
using IronPdf;
using System.Collections.Generic;
public class PDFGenerator
{
public static void GeneratePDFFromList(IList<string> dataList)
{
// Initialize the HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Start building HTML content from the dataList
var htmlContent = "<h1>My Data List</h1><ul>";
foreach (var item in dataList)
{
htmlContent += $"<li>{item}</li>";
}
htmlContent += "</ul>";
// Convert HTML string to PDF
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF to a file
pdfDocument.SaveAs("DataList.pdf");
}
}
// Example usage
class Program
{
static void Main(string[] args)
{
License.LicenseKey = "License-Key";
IList<string> myDataList = new List<string> { "Apple", "Banana", "Cherry" };
PDFGenerator.GeneratePDFFromList(myDataList);
}
}
Imports IronPdf
Imports System.Collections.Generic
Public Class PDFGenerator
Public Shared Sub GeneratePDFFromList(ByVal dataList As IList(Of String))
' Initialize the HtmlToPdf renderer
Dim renderer = New ChromePdfRenderer()
' Start building HTML content from the dataList
Dim htmlContent = "<h1>My Data List</h1><ul>"
For Each item In dataList
htmlContent &= $"<li>{item}</li>"
Next item
htmlContent &= "</ul>"
' Convert HTML string to PDF
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF to a file
pdfDocument.SaveAs("DataList.pdf")
End Sub
End Class
' Example usage
Friend Class Program
Shared Sub Main(ByVal args() As String)
License.LicenseKey = "License-Key"
Dim myDataList As IList(Of String) = New List(Of String) From {"Apple", "Banana", "Cherry"}
PDFGenerator.GeneratePDFFromList(myDataList)
End Sub
End Class
Bu örnekte, meyve isimlerinden oluşan bir koleksiyonu saklamak için bir IList<string> kullanılmıştır. GeneratePDFFromList yöntemi daha sonra bu listeyi tekrarlayarak, her öğeyi bir sırasız liste içinde içeren bir HTML dizgesi oluşturur. IronPDF'nin ChromePdfRenderer bu HTML içeriğini bir PDF belgesine dönüştürür, ardından bir dosyaya kaydedilir.

Sonuç

Bu başlangıç dostu kılavuz, C#'de IList'in temellerini ve pratik kullanımlarını ele almayı hedefledi. Basit kullanımdan özel uygulamaya kadar olan örneklerle, IList'un C# geliştiricisinin araç kutusunda güçlü bir araç olduğu açıktır. Veri koleksiyonlarını manipüle ediyor veya kendi koleksiyon türlerinizi oluşturuyor olun, IList, etkili yazılım geliştirme için gerekli işlevselliği ve esnekliği sunar. IronPDF, ilgili kullanıcılar için PDF kutuphanesinin ücretsiz denemesini sunar, lisanslar $799'dan başlamaktadır.
Sıkça Sorulan Sorular
C#'ta IList arabirimi nedir?
`IList` arabirimi, indeksle erişilebilen dinamik koleksiyonlar oluşturmak için .NET Framework'ün Collections isim alanının bir parçasıdır. Eleman ekleme, yerleştirme, kaldırma ve erişme yöntemleri sunarak statik dizilere göre daha fazla esneklik sağlar.
C# ile HTML'yi PDF'e nasıl dönüştürebilirsiniz?
IronPDF'nin `RenderHtmlAsPdf` yöntemini kullanarak C#'ta HTML'yi PDF'e dönüştürebilirsiniz. Bu, HTML dizelerini, dosyalarını veya URL'lerini yüksek kaliteli PDF belgelerine dönüştürmenizi sağlar.
IList arabiriminin bazı anahtar yöntemleri nelerdir?
`IList` arabiriminin anahtar yöntemleri arasında `Add`, `Insert`, `Remove`, `RemoveAt` ve `IndexOf` vardır. Bu yöntemler, koleksiyondaki elemanları dinamik olarak yönetmek ve değiştirmek için gereklidir.
C#'ta özel bir IList nasıl oluşturulur?
C#'ta özel bir `IList` oluşturmak için, bir sınıfta `IList` arabirimini uygulayarak, koleksiyonun elemanlarını nasıl yönettiğini özelleştirmek için gerekli yöntemleri ve özellikleri (örneğin, `Add`, `Remove`, `IndexOf`) geçersiz kılabilirsiniz.
IronPDF, HTML'den PDF'leri nasıl oluşturur?
IronPDF, HTML içeriğini PDF'ye dönüştürmek için `ChromePdfRenderer` sınıfını kullanır. HTML dizeleri, dosyaları veya URL'lerden dönüşümü destekleyerek web içeriğinden doğru PDF oluşturmayı sağlar.
Bir IList verisinden PDF oluşturabilir misiniz?
Evet, bir IList'ten PDF oluşturmak için listeyi yineleyerek bir HTML dizesi oluşturabilir ve ardından IronPDF'in `ChromePdfRenderer`'ını kullanarak HTML'yi PDF belgesine dönüştürebilir, `SaveAs` yöntemiyle kaydedebilirsiniz.
IList hangi ileri düzey işlemleri destekler?
`IList`'deki ileri düzey işlemler, bir nesnenin `Contains` kullanılarak koleksiyonda olup olmadığını kontrol etme ve `IndexOf` ile bir nesnenin indeksini bulmayı içerir. Bu işlevler, öğeleri manuel olarak aramadan koleksiyonları verimli bir şekilde yönetmeye yardımcı olur.
C#'da PDF oluşturma sorunlarını nasıl giderebilirsiniz?
C#'da PDF oluşturma sorunlarıyla karşılaşırsanız, HTML içeriğinizin doğru formatlandığından ve IronPDF'in en son sürümünü kullandığınızdan emin olun. Dönüşüm sürecinde meydana gelen her türlü istisna için kontrol yaparak daha fazla bilgi edinin.




