.NET 帮助

C# iList(它如何为开发人员工作)

乔尔迪·巴尔迪亚
乔尔迪·巴尔迪亚
2024年六月6日
分享:

IList 简介

IList "是 .NET Framework 的 Collections 名称空间的一部分。 它是一个非通用的集合接口,为可以通过索引单独访问的对象集合提供了蓝图。 与数组不同、临时清单该工具允许对象值元素的动态数量,这意味着您可以根据需要从集合中添加或删除元素。 它是 .NET Framework 中所有非通用列表的基础接口,提供了一种比数组更灵活的方式来管理对象集合。 我们将了解 IList 界面和IronPDF C# PDF 库在本教程中。

了解 IList 界面

公共接口 IList "声明是在 C# 中创建符合 .NET Framework 的 Collections 名称空间指定的 "IList "契约的自定义集合的基本部分。 IList "包含的属性和方法可用于访问集合中的元素、对其进行计数,以及通过添加、插入或删除元素来修改集合。 以下是 IList 接口定义的一些关键属性和方法:

  • IsFixedSize "和 "IsReadOnly "等属性分别告知集合是固定大小还是只读。
  • 添加"、无效 "插入"、"删除 "和 "移除 "等方法用于修改集合中的元素。 您可以添加、插入和删除元素。
  • IndexOf "方法用于定位元素,而 "Item "属性则用于定位元素。(或 C# 中的索引器)允许根据索引获取和设置元素。

公共接口 "IList "的实际用法

为了展示 IList 如何工作,让我们创建一个简单的示例。 本通用版本示例将演示如何声明一个 IList、向其中添加项目并遍历其内容。

创建和修改 "IL 列表

首先,让我们看看如何声明一个 IList 并向其中添加项目:

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

在上面的示例中,我们使用实现了 IList 的类 ArrayList 创建了一个 IList 实例。 我们添加了各种不同类型的对象,以证明 IList 可以容纳任何对象。 最后,我们迭代了这个集合,打印出了每个元素。

基于索引的访问和修改

通过索引访问和修改元素是 IList 的主要功能。 下面的 "IList "示例展示了如何做到这一点:

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

实现自定义 `IList

有时,您可能需要一个继承了 IList的定制集合。 这可以对元素的存储、访问和修改方式进行更多控制。 下面是一个实现了 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();
    }
}

这个 CustomCollection 类封装了一个 ArrayList,这个类本身实现了 IList。 我们的 CustomCollection 将调用转发给底层的 ArrayList,使其能够像其他实现了 IList 的集合一样运行。 该示例演示了创建一个可通过索引访问的集合,并修改了(添加、插入或删除的项目)就像任何实现了 IList 的内置 .NET 集合一样,可以对其进行迭代。

使用 IList 的高级操作

除了基本的添加、删除和访问操作外,IList 还允许进行更复杂的操作和查询。 例如,检查集合中是否包含特定对象或查找集合中对象的索引,这些操作对于某些应用程序来说至关重要:

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

在处理对象集合时,如果需要确定特定项目的存在或位置,而不需要遍历整个集合,这些操作会特别有用。

IronPDF:C# PDF 库

C# iList(如何为开发人员工作):图 1 - IronPDF

IronPDF 是面向 .NET 开发人员的 PDF 库,可直接在 .NET 应用程序中创建和处理 PDF 文档。 它支持转换HTML 转换为 PDF 文档我们还需要将 PDF、图像和网页翻译成 PDF。 开发人员可以使用该库轻松地为其应用程序添加 PDF 功能。 IronPdf 还包括编辑、合并和拆分 PDF 文件的功能,可对 PDF 操作进行全面控制。

IronPDF 在以下方面表现出色HTML 转 PDF转换,确保精确保留原始布局和样式。 它非常适合从基于网络的内容(如报告、发票和文档)创建PDF。 IronPDF 支持 HTML 文件、URL 和原始 HTML 字符串,能够轻松生成高质量的 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");
    }
}
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");
    }
}

代码示例

下面是一个简单明了的示例,演示了使用 IronPDF 和 IList 接口从字符串列表中生成一个简单的 PDF 文档:

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

在本例中,一个 IList<string>用于存储水果名称集合。 然后,"GeneratePDFFromList "方法对该列表进行迭代,生成一个包含无序列表中每个项目的 HTML 字符串。IronPdf 的 ChromePdfRenderer 会将 HTML 内容转换为 PDF 文档,随后保存到文件中。

C# iList(如何为开发人员工作):图 2 - PDF 输出

结论

C# iList(如何为开发人员工作):图 3 - 许可证

这本适合初学者的指南旨在介绍 C# 中 IList 的基础知识和实际用途。 通过从简单用法到自定义实现的各种示例,我们可以清楚地看到,IList 是 C# 开发人员工具包中的一个强大工具。 无论是操作数据集合还是构建集合类型,IList 都能提供有效软件开发所需的功能和灵活性。 IronPDF 提供一个免费试用其 PDF 库为感兴趣的用户提供,许可证起价为 $749。

乔尔迪·巴尔迪亚
乔尔迪·巴尔迪亚
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 运用技能时,他会进行游戏编程。作为产品测试、产品开发和研究的负责人之一,Jordi 为持续的产品改进增添了极大的价值。多样化的经验让他充满挑战和参与感,他说这是他在 Iron Software 工作中最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。
< 前一页
C# 链表(开发者如何工作)
下一步 >
Polly Retry(开发人员如何使用)