Ir para o conteúdo do rodapé
AJUDA DO .NET

C# iList (Como funciona para desenvolvedores)

Introdução ao IList

IList faz parte do namespace Collections do .NET Framework. Trata-se de uma interface de coleção não genérica que fornece o modelo para uma coleção de objetos que podem ser acessados ​​individualmente por seu índice. Ao contrário dos arrays, IList permite um número dinâmico de elementos de valor de objeto, o que significa que você pode adicionar ou remover elementos da coleção conforme necessário. Serve como interface base para todas as listas não genéricas no .NET Framework, oferecendo uma maneira de gerenciar uma coleção de objetos de forma mais flexível do que com arrays. Neste tutorial, aprenderemos sobre a interface IList e a biblioteca IronPDF para C# .

Entendendo a interface IList

A declaração public interface IList é uma parte fundamental da criação de coleções personalizadas em C# que aderem ao contrato IList especificado pelo namespace Collections do .NET Framework. IList inclui propriedades e métodos que permitem acessar elementos na coleção, contá-los e modificar a coleção adicionando, inserindo ou removendo elementos. Aqui estão algumas das principais propriedades e métodos definidos na interface IList:

Propriedades como IsFixedSize e IsReadOnly informam se a coleção tem tamanho fixo ou é somente leitura, respectivamente. Métodos como Add, Insert, Remove e RemoveAt são usados ​​para modificar elementos dentro da coleção. Você pode adicionar, inserir e remover elementos.

  • O método IndexOf serve para localizar elementos, e a propriedade Item (ou indexador em C#) permite obter e definir elementos com base em seu índice.

Utilização prática da interface IList

Para demonstrar como o IList funciona, vamos criar um exemplo simples. Este exemplo demonstrará como declarar um IList, adicionar itens a ele e iterar sobre seu conteúdo.

Criando e modificando um IList

Primeiro, vejamos como declarar um IList e adicionar itens a ele:

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

No exemplo acima, criamos uma instância de IList usando ArrayList, uma classe que implementa IList. Adicionamos uma mistura de diferentes tipos de objetos para demonstrar que um IList pode conter qualquer objeto. Finalmente, iteramos sobre a coleção, imprimindo cada elemento.

Acesso e modificação baseados em índice

Acessar e modificar elementos pelo seu índice é uma característica fundamental do IList. O exemplo a seguir mostra como você pode fazer isso:

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

Implementando um IList personalizado

Às vezes, você pode precisar de uma coleção personalizada que herde IList. Isso permite maior controle sobre como os elementos são armazenados, acessados ​​e modificados. Abaixo está um exemplo de uma coleção personalizada simples que implementa IList:

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

Esta classe CustomCollection encapsula uma classe ArrayList, que por sua vez implementa IList. Nosso CustomCollection encaminha chamadas para o ArrayList subjacente, permitindo que ele se comporte como qualquer outra coleção que implementa IList. Este exemplo demonstra a criação de uma coleção que pode ser acessada por índice, modificada (itens adicionados, inseridos ou removidos) e iterada, assim como qualquer coleção integrada do .NET que implementa IList.

Operações avançadas com IList

Além das operações básicas de adição, remoção e acesso, o IList permite manipulações e consultas mais complexas. Por exemplo, verificar se a coleção contém um objeto específico ou encontrar o índice de um objeto dentro da coleção são operações que podem ser essenciais para determinadas aplicações:

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

Essas operações podem ser particularmente úteis ao lidar com coleções de objetos onde é necessário determinar a presença ou a posição de itens específicos sem iterar sobre toda a coleção.

IronPDF: Biblioteca PDF em C

C# iList (Como funciona para desenvolvedores): Figura 1 - IronPDF

IronPDF é uma biblioteca PDF para desenvolvedores .NET que permite a criação e manipulação de documentos PDF diretamente em aplicações .NET . Ele permite a conversão de documentos HTML para PDF , imagens e páginas da web para PDF. Com esta biblioteca, os desenvolvedores podem adicionar facilmente funcionalidades de PDF aos seus aplicativos. O IronPDF também inclui recursos para editar, mesclar e dividir arquivos PDF, proporcionando controle abrangente sobre a manipulação de PDFs.

O IronPDF se destaca na conversão de HTML para PDF , garantindo a preservação precisa dos layouts e estilos originais. É perfeito para criar PDFs a partir de conteúdo da web, como relatórios, faturas e documentação. Com suporte para arquivos HTML, URLs e strings HTML brutas, o IronPDF produz facilmente documentos PDF de alta qualidade.

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

Exemplo de código

Aqui está um exemplo simples que demonstra como gerar um documento PDF a partir de uma lista de strings usando o IronPDF e a 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);
    }
}
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

Neste exemplo, um IList<string> é usado para armazenar uma coleção de nomes de frutas. O método GeneratePDFFromList itera sobre essa lista, construindo uma string HTML que inclui cada item em uma lista não ordenada. O método ChromePdfRenderer do IronPDF converte esse conteúdo HTML em um documento PDF, que é posteriormente salvo em um arquivo.

C# iList (Como funciona para desenvolvedores): Figura 2 - Saída em PDF

Conclusão

C# iList (Como funciona para desenvolvedores): Figura 3 - Licenciamento

Este guia para iniciantes teve como objetivo abordar os conceitos básicos e os usos práticos de IList em C#. Com exemplos que vão desde o uso simples até a implementação personalizada, fica claro que IList é uma ferramenta poderosa no conjunto de ferramentas do desenvolvedor C#. Seja para manipular conjuntos de dados ou para criar seus próprios tipos de coleção, o IList oferece a funcionalidade e a flexibilidade necessárias para um desenvolvimento de software eficaz. A IronPDF oferece um teste gratuito de sua biblioteca de PDF para usuários interessados, com licenças disponíveis a partir de $799.

Perguntas frequentes

O que é a interface IList em C#?

A interface `IList` faz parte do namespace Collections do .NET Framework e é usada para criar coleções dinâmicas que podem ser acessadas por índice. Ela fornece métodos para adicionar, inserir, remover e acessar elementos, oferecendo mais flexibilidade do que arrays estáticos.

Como converter HTML para PDF em C#?

Você pode converter HTML para PDF em C# usando o método `RenderHtmlAsPdf` do IronPDF. Isso permite transformar strings HTML, arquivos ou URLs em documentos PDF de alta qualidade.

Quais são alguns dos principais métodos da interface IList?

Os principais métodos da interface `IList` incluem `Add`, `Insert`, `Remove`, `RemoveAt` e `IndexOf`. Esses métodos são essenciais para gerenciar e modificar os elementos da coleção dinamicamente.

Como criar uma IList personalizada em C#?

Para criar uma `IList` personalizada em C#, você pode implementar a interface `IList` em uma classe, sobrescrevendo os métodos e propriedades necessários, como `Add`, `Remove` e `IndexOf`, para personalizar a forma como a coleção lida com seus elementos.

Como o IronPDF cria PDFs a partir de HTML?

O IronPDF utiliza a classe `ChromePdfRenderer` para converter conteúdo HTML em PDFs. Ele suporta a conversão de strings HTML, arquivos ou URLs, garantindo a criação precisa de PDFs a partir de conteúdo da web.

É possível gerar um PDF a partir de uma lista de dados (IList)?

Sim, você pode gerar um PDF a partir de uma IList iterando sobre a lista para construir uma string HTML e, em seguida, usando o `ChromePdfRenderer` do IronPDF para converter o HTML em um documento PDF, que pode ser salvo usando o método `SaveAs`.

Quais operações avançadas o IList suporta?

As operações avançadas em `IList` incluem verificar se a coleção contém um objeto específico usando `Contains` e encontrar o índice de um objeto com `IndexOf`. Essas funções ajudam a gerenciar coleções de forma eficiente sem a necessidade de pesquisar manualmente os elementos.

Como solucionar problemas de geração de PDF em C#?

Se você encontrar problemas com a geração de PDFs em C#, verifique se o conteúdo HTML está formatado corretamente e se você está usando a versão mais recente do IronPDF. Verifique se há alguma exceção lançada durante o processo de conversão para obter mais informações.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim