.NET-HILFE

C# iList (Wie es für Entwickler funktioniert)

Einführung in die IList

IList ist ein Teil des Collections-Namespace des .NET Frameworks. Es handelt sich um eine nicht-generische Sammlungsschnittstelle, die den Bauplan für eine Sammlung von Objekten liefert, auf die einzeln über ihren Index zugegriffen werden kann. Im Gegensatz zu Arrays ermöglicht IList eine dynamische Anzahl von Objektelementen, was bedeutet, dass Sie Elemente nach Bedarf zur Sammlung hinzufügen oder daraus entfernen können. Sie dient als Basisschnittstelle für alle nicht-generischen Listen im .NET-Framework und bietet eine Möglichkeit, eine Sammlung von Objekten auf flexiblere Weise als Arrays zu verwalten. Wir werden in diesem Tutorial die IList-Schnittstelle und die IronPDF C# PDF-Bibliothek kennenlernen.

Verständnis des IList-Interfaces

Die Deklaration von public interface IList ist ein grundlegender Bestandteil bei der Erstellung benutzerdefinierter Sammlungen in C#, die dem IList-Vertrag entsprechen, der vom Collections-Namespace des .NET Frameworks festgelegt ist. IList umfasst Eigenschaften und Methoden, die das Zugreifen auf Elemente in der Sammlung, das Zählen derselben und das Ändern der Sammlung durch Hinzufügen, Einfügen oder Entfernen von Elementen ermöglichen. Hier sind einige der wichtigsten Eigenschaften und Methoden, die in der IList-Schnittstelle definiert sind:

  • Eigenschaften wie IsFixedSize und IsReadOnly geben an, ob die Sammlung eine feste Größe hat oder schreibgeschützt ist.
  • Methoden wie Add, void Insert, Remove und RemoveAt werden verwendet, um Elemente innerhalb der Sammlung zu ändern. Sie können Elemente hinzufügen, einfügen und entfernen.
  • Die IndexOf-Methode dient zum Auffinden von Elementen, und die Item-Eigenschaft (oder Indexer in C#) erlaubt das Abrufen und Festlegen von Elementen basierend auf ihrem Index.

Praktische Verwendung des öffentlichen Interfaces IList

Um zu demonstrieren, wie IList funktioniert, erstellen wir ein einfaches Beispiel. Dieses generische Beispiel wird zeigen, wie man eine IList deklariert, Elemente hinzufügt und über deren Inhalte iteriert.

Erstellen und Ändern einer IList

Zuerst sehen wir, wie man eine IList deklariert und Elemente hinzufügt:

using System;
using System.Collections;
class Program
{
    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 interface using count property
        Console.WriteLine($"Number of elements: {myIList.Count}");
        // Access Elements
        foreach (var element in myIList)
        {
            Console.WriteLine(element);
        }
    }
}
using System;
using System.Collections;
class Program
{
    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 interface using count property
        Console.WriteLine($"Number of elements: {myIList.Count}");
        // Access Elements
        foreach (var element in myIList)
        {
            Console.WriteLine(element);
        }
    }
}
Imports System
Imports System.Collections
Friend Class Program
	Private 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 interface using count property
		Console.WriteLine($"Number of elements: {myIList.Count}")
		' Access Elements
		For Each element In myIList
			Console.WriteLine(element)
		Next element
	End Sub
End Class
$vbLabelText   $csharpLabel

Im obigen Beispiel haben wir eine IList-Instanz mit ArrayList erstellt, einer Klasse, die IList implementiert. Wir haben eine Mischung aus verschiedenen Objekttypen hinzugefügt, um zu zeigen, dass eine IList jedes Objekt halten kann. Schließlich haben wir die Sammlung durchlaufen und jedes Element ausgedruckt.

Indexbasierter Zugriff und Modifikation

Der Zugriff auf und die Änderung von Elementen anhand ihres Indexes ist eine zentrale Funktion von IList. Das folgende IList-Beispiel zeigt, wie Sie es tun können:

// 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]}");
// 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]}");
' 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)}")
$vbLabelText   $csharpLabel

Implementierung der benutzerdefinierten IList

Manchmal benötigen Sie möglicherweise eine maßgeschneiderte Sammlung, die IList erbt. Dies ermöglicht eine bessere Kontrolle darüber, wie Elemente gespeichert, aufgerufen und geändert werden. Unten ist ein Beispiel für eine einfache benutzerdefinierte Sammlung, die IList implementiert:

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;
// int add
    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();
    }
}
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;
// int add
    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();
    }
}
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
' int add
	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
$vbLabelText   $csharpLabel

Diese CustomCollection-Klasse kapselt eine ArrayList, eine Klasse, die selbst IList implementiert. Unsere CustomCollection leitet Aufrufe an die zugrunde liegende ArrayList weiter, wodurch sie sich wie jede andere Sammlung verhält, die IList implementiert. Dieses Beispiel zeigt die Erstellung einer Sammlung, die über den Index zugänglich ist, modifiziert werden kann (Elemente hinzugefügt, eingefügt oder entfernt) und durchlaufen werden kann, genau wie jede eingebaute .NET-Sammlung, die IList implementiert.

Erweiterte Operationen mit IList

Über die grundlegenden Hinzufüge-, Entfernungs- und Zugriffsoperationen hinaus ermöglicht IList komplexere Manipulationen und Abfragen. Die Überprüfung, ob die Sammlung ein bestimmtes Objekt enthält, oder die Suche nach dem Index eines Objekts innerhalb der Sammlung sind beispielsweise Operationen, die für bestimmte Anwendungen unerlässlich sein können:

// 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}");
// 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}");
' 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}")
$vbLabelText   $csharpLabel

Diese Operationen können besonders nützlich sein, wenn es um Sammlungen von Objekten geht, bei denen Sie das Vorhandensein oder die Position bestimmter Elemente feststellen müssen, ohne die gesamte Sammlung zu durchlaufen.

IronPDF: C# PDF-Bibliothek

C# iList (Wie es für Entwickler funktioniert): Abbildung 1 - IronPDF

IronPDF ist eine PDF-Bibliothek für .NET-Entwickler, die die Erstellung und Bearbeitung von PDF-Dokumenten direkt in .NET-Anwendungen ermöglicht. Es unterstützt die Umwandlung von HTML in PDF-Dokumente, Bilder und Webseiten in PDF. Mit dieser Bibliothek können Entwickler ihren Anwendungen problemlos PDF-Funktionen hinzufügen. IronPDF enthält auch Funktionen zum Bearbeiten, Zusammenführen und Aufteilen von PDF-Dateien, die eine umfassende Kontrolle über die PDF-Bearbeitung ermöglichen.

IronPDF zeichnet sich durch die HTML-zu-PDF-Konvertierung aus und gewährleistet eine präzise Erhaltung der ursprünglichen Layouts und Stile. Es ist perfekt geeignet, um PDFs aus webbasierten Inhalten wie Berichten, Rechnungen und Dokumentationen zu erstellen. Mit Unterstützung von HTML-Dateien, URLs und rohen HTML-Zeichenfolgen produziert IronPDF mühelos hochwertige PDF-Dokumente.

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

Code-Beispiel

Hier ist ein einfaches Beispiel, das die Erstellung eines einfachen PDF-Dokuments aus einer Liste von Zeichenfolgen mit IronPDF und der IList-Schnittstelle demonstriert:

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
$vbLabelText   $csharpLabel

In diesem Beispiel wird eine IList<string> verwendet, um eine Sammlung von Früchtenamen zu speichern. Die Methode GeneratePDFFromList iteriert dann über diese Liste und erstellt einen HTML-String, der jedes Element in einer ungeordneten Liste enthält. IronPDFs ChromePdfRenderer konvertiert diesen HTML-Inhalt in ein PDF-Dokument, das anschließend in einer Datei gespeichert wird.

C# iList (Wie es für Entwickler funktioniert): Abbildung 2 - PDF-Ausgabe

Schlussfolgerung

C# iList (Wie es für Entwickler funktioniert): Abbildung 3 - Lizenzierung

Dieser anfängerfreundliche Leitfaden zielte darauf ab, die Grundlagen und praktischen Anwendungen von IList in C# abzudecken. Mit Beispielen, die von einfacher Verwendung bis hin zu benutzerdefinierter Implementierung reichen, ist klar, dass IList ein leistungsstarkes Werkzeug im Werkzeugkasten eines C#-Entwicklers ist. Unabhängig davon, ob Sie Sammlungen von Daten manipulieren oder Ihre eigenen Sammlungstypen erstellen, bietet IList die Funktionalität und Flexibilität, die für eine effektive Softwareentwicklung erforderlich sind. IronPDF bietet interessierten Nutzern eine kostenlose Testversion seiner PDF-Bibliothek an, mit Lizenzen ab $749.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
C# Linked List (Wie es funktioniert für Entwickler)
NÄCHSTES >
Polly Retry (Wie es für Entwickler funktioniert)