AIDE .NET

C# iList (Comment ça marche pour les développeurs)

Kannaopat Udonpant
Kannapat Udonpant
juin 6, 2024
Partager:

Introduction à la IListe

IList fait partie de l'espace de noms Collections du Framework .NET. Il s'agit d'une interface de collection non générique qui fournit le modèle d'une collection d'objets auxquels on peut accéder individuellement par leur index. Contrairement aux tableaux,IList permet un nombre dynamique d'éléments de valeur d'objet, ce qui signifie que vous pouvez ajouter ou supprimer des éléments de la collection en fonction de vos besoins. Elle sert d'interface de base pour toutes les listes non génériques dans le Framework .NET, offrant un moyen de gérer une collection d'objets d'une manière plus souple que les tableaux. Nous apprendrons à connaître l'interface IList et l'interfaceIronPDF C# PDF Library (Bibliothèque PDF C#) dans ce tutoriel.

Comprendre l'interface `IList

La déclaration public interface IList est un élément fondamental de la création de collections personnalisées en C# qui adhèrent au contrat IList spécifié par l'espace de noms Collections du Framework .NET. IList comprend des propriétés et des méthodes qui permettent d'accéder aux éléments de la collection, de les compter et de modifier la collection en ajoutant, insérant ou supprimant des éléments. Voici quelques-unes des principales propriétés et méthodes définies dans l'interface IList :

  • Les propriétés telles que IsFixedSize et IsReadOnly indiquent si la collection est de taille fixe ou en lecture seule, respectivement.
  • Les méthodes telles que Add, void Insert, Remove et RemoveAt sont utilisées pour modifier les éléments de la collection. Vous pouvez ajouter, insérer et supprimer des éléments.
  • La méthode IndexOf permet de localiser les éléments et la propriété Item permet de localiser les éléments(ou indexeur en C#) permet d'obtenir et de définir des éléments en fonction de leur index.

Utilisation pratique de l'interface publique IList (en anglais)

Pour montrer comment fonctionne IList, créons un exemple simple. Cet exemple de version générique montre comment déclarer une IList, y ajouter des éléments et itérer sur son contenu.

Création et modification d'une IListe

Tout d'abord, voyons comment déclarer une IList et y ajouter des éléments :

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);
        }
    }
}

Dans l'exemple ci-dessus, nous avons créé une instance de IList en utilisant ArrayList, une classe qui implémente IList. Nous avons ajouté un mélange de différents types d'objets pour démontrer qu'une IList peut contenir n'importe quel objet. Enfin, nous avons itéré sur la collection, en imprimant chaque élément.

Accès et modification sur la base d'un index

L'accès et la modification des éléments par leur index est une caractéristique essentielle de IList. L'exemple suivant de IList montre comment vous pouvez le faire :

// 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]}");

Implémentation d'une IList personnalisée

Parfois, vous pouvez avoir besoin d'une collection personnalisée qui hérite de IList. Cela permet de mieux contrôler la manière dont les éléments sont stockés, accessibles et modifiés. Voici un exemple de collection personnalisée simple mettant en œuvre IList :

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();
    }
}

Cette classe CustomCollection encapsule une ArrayList, une classe qui implémente elle-même IList. Notre CustomCollection transmet les appels à la ArrayList sous-jacente, ce qui lui permet de se comporter comme n'importe quelle autre collection qui implémente IList. Cet exemple illustre la création d'une collection à laquelle il est possible d'accéder par l'index, la modification, etc(les éléments ajoutés, insérés ou supprimés)et itérée, tout comme n'importe quelle collection .NET intégrée qui implémente IList.

Opérations avancées avec IList

Au-delà des opérations de base d'ajout, de suppression et d'accès, IList permet des manipulations et des requêtes plus complexes. Par exemple, vérifier si la collection contient un objet spécifique ou trouver l'index d'un objet dans la collection sont des opérations qui peuvent être essentielles pour certaines applications :

// 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}");

Ces opérations peuvent être particulièrement utiles lorsqu'il s'agit de collections d'objets et qu'il faut déterminer la présence ou la position d'éléments spécifiques sans avoir à itérer sur l'ensemble de la collection.

IronPDF : Bibliothèque PDF C

C# iList(Comment ça marche pour les développeurs) : Figure 1 - IronPDF

IronPDF for .NET est une bibliothèque PDF pour les développeurs .NET qui permet la création et la manipulation de documents PDF directement dans les applications .NET. Il permet de convertirHTML vers documents PDFla traduction d'images et de pages web au format PDF. Les développeurs peuvent facilement ajouter des fonctionnalités PDF à leurs applications grâce à cette bibliothèque. IronPDF comprend également des fonctions d'édition, de fusion et de division de fichiers PDF, qui permettent un contrôle complet de la manipulation des PDF.

IronPDF excelle dans les domaines suivantsHTML vers PDFconversion, garantissant une préservation précise des mises en page et des styles originaux. C'est parfait pour créer des PDF à partir de contenus basés sur le web, tels que des rapports, des factures et de la documentation. Avec la prise en charge des fichiers HTML, des URL et des chaînes HTML brutes, IronPDF produit facilement des documents PDF de haute qualité.

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");
    }
}

Exemple de code

Voici un exemple simple qui montre comment générer un document PDF simple à partir d'une liste de chaînes de caractères en utilisant IronPDF et l'interface IList :

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);
    }
}

Dans cet exemple, une IList<string> est utilisé pour stocker une collection de noms de fruits. La méthode GeneratePDFFromList itère ensuite sur cette liste, construisant une chaîne HTML qui inclut chaque élément dans une liste non ordonnée. IronPDF's ChromePdfRenderer convertit ce contenu HTML en un document PDF, qui est ensuite sauvegardé dans un fichier.

C# iList(Comment ça marche pour les développeurs) : Figure 2 - Sortie PDF

Conclusion

C# iList(Comment ça marche pour les développeurs) : Figure 3 - Licence

Ce guide destiné aux débutants a pour but de couvrir les bases et les utilisations pratiques de IList en C#. Avec des exemples allant de l'utilisation simple à la mise en œuvre personnalisée, il est clair que IList est un outil puissant dans la boîte à outils du développeur C#. Que vous manipuliez des collections de données ou que vous construisiez vos types de collections, IList offre les fonctionnalités et la flexibilité nécessaires à un développement logiciel efficace. IronPDF offre un service deessai gratuit de sa bibliothèque PDF pour les utilisateurs intéressés, avec des licences disponibles à partir de $749.

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Tout en poursuivant ses études, Kannapat est également devenu membre du Vehicle Robotics Laboratory, qui fait partie du Department of Bioproduction Engineering (département d'ingénierie de la bioproduction). En 2022, il a mis à profit ses compétences en C# pour rejoindre l'équipe d'ingénieurs d'Iron Software, où il se concentre sur IronPDF. Kannapat apprécie son travail car il apprend directement auprès du développeur qui écrit la majeure partie du code utilisé dans IronPDF. Outre l'apprentissage par les pairs, Kannapat apprécie l'aspect social du travail chez Iron Software. Lorsqu'il n'écrit pas de code ou de documentation, Kannapat peut généralement être trouvé en train de jouer sur sa PS5 ou de revoir The Last of Us.
< PRÉCÉDENT
Liste chaînée en C# (Comment ça marche pour les développeurs)
SUIVANT >
Polly Retry (Comment ça marche pour les développeurs)