フッターコンテンツにスキップ
.NETヘルプ

C# iList(開発者向けの動作方法)

IList の紹介

IList は.NET Framework のコレクション名前空間の一部です。 これは、インデックスで個別にアクセス可能なオブジェクトのコレクションの設計図を提供する、非ジェネリックなコレクションインターフェースです。 配列とは異なり、 IListではオブジェクト値要素の数が動的に設定されるため、必要に応じてコレクションに要素を追加したり、コレクションから要素を削除したりできます。 これは、.NET Framework内のすべての非ジェネリックリストの基本インターフェースとして機能し、配列よりも柔軟な方法でオブジェクトの集合を管理する手段を提供します。 このチュートリアルでは、IList インターフェイスとIronPDF C# PDF ライブラリについて学習します。

IList インターフェースの理解

public interface IList 宣言は、 .NET Framework の Collections 名前空間で指定された IList コントラクトに準拠した C# でのカスタム コレクションの作成の基本的な部分です。 IList には、コレクション内の要素にアクセスし、それらの要素をカウントし、要素を追加、挿入、または削除してコレクションを変更できるようにするプロパティとメソッドが含まれています。 IList インターフェイスで定義されている主要なプロパティとメソッドの一部を次に示します。

  • IsFixedSizeIsReadOnly などのプロパティは、コレクションがそれぞれ固定サイズか読み取り専用かを示します。
  • コレクション内の要素を変更するには、RemoveAt などのメソッドを使用します。 要素を追加、挿入、削除できます。
  • IndexOf メソッドは要素を特定するためのもので、Item プロパティ (C# ではインデクサー) を使用すると、インデックスに基づいて要素を取得および設定できます。

IList インターフェースの実践的な使用法

IList がどのように機能するかを示すために、簡単な例を作成しましょう。 この例では、IList を宣言し、それに項目を追加し、その内容を反復処理する方法を示します。

IList の作成と変更

まず、IList を宣言し、それに項目を追加する方法を見てみましょう。

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

上記の例では、IList を実装するクラスである ArrayList を使用して、IList インスタンスを作成しました。 IList が任意のオブジェクトを保持できることを示すために、さまざまな種類のオブジェクトの組み合わせを追加しました。 最後に、コレクションを反復処理し、各要素を印刷しました。

インデックスに基づくアクセスおよび変更

インデックスによる要素へのアクセスと変更は、IList の重要な機能です。 次の例は、それを行う方法を示しています:

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

カスタムの実装 IList

場合によっては、IList を継承したカスタマイズされたコレクションが必要になることがあります。 これにより、要素の保管、アクセス、変更方法に対するよりよい制御が可能になります。 以下は、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();
    }
}
$vbLabelText   $csharpLabel

この CustomCollection クラスは、それ自体が IList を実装するクラスである ArrayList をカプセル化します。 私たちの CustomCollection は呼び出しを基礎となる ArrayList に転送し、IList を実装する他のコレクションと同じように動作できるようにします。 この例では、IList を実装する組み込み for .NETコレクションと同様に、インデックスでアクセスでき、変更 (項目の追加、挿入、または削除) でき、反復処理できるコレクションを作成する方法を示します。

IList を使用した高度な操作

基本的な追加、削除、アクセス操作に加えて、IList ではより複雑な操作やクエリが可能になります。 たとえば、コレクションに特定のオブジェクトが含まれているかを確認したり、コレクション内のオブジェクトのインデックスを見つけることは、特定のアプリケーションにとって重要な場合もあります:

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

これらの操作は、特定のアイテムの存在や位置を、コレクション全体を反復処理しないで判定する必要があるときに、オブジェクトのコレクションを扱う際に特に便利です。

IronPDF: C# PDFライブラリ

C# iList (開発者向けの仕組み): 図 1 - IronPDF

IronPDFは、.NETアプリケーション内で直接PDFドキュメントの作成と操作を可能にする.NET開発者向けのPDFライブラリです。 HTMLをPDF文書に変換する、画像、WebページをPDFに変換することをサポートしています。 開発者は、このライブラリを使用してアプリケーションに簡単にPDF機能を追加できます。 IronPDFには、PDFファイルの編集、結合、分割機能も含まれており、PDF操作を包括的に制御できます。

IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な 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");
    }
}
$vbLabelText   $csharpLabel

コード例

以下は、 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);
    }
}
$vbLabelText   $csharpLabel

この例では、果物の名前のコレクションを格納するために IList<string> が使用されます。 GeneratePDFFromList メソッドはこのリストを反復処理し、順序なしリストの各項目を含む HTML 文字列を構築します。IronPDF の ChromePdfRenderer は、この HTML コンテンツを PDF ドキュメントに変換し、ファイルに保存します。

C# iList (開発者向けの仕組み): 図 2 - PDF 出力

結論

C# iList (開発者向けの仕組み): 図 3 - ライセンス

この初心者向けのガイドは、C# における IList の基本と実用的な使用法を説明することを目的としています。 単純な使用法からカスタム実装までさまざまな例から、IList が C# 開発者ツールキットの強力なツールであることは明らかです。 データのコレクションを操作する場合でも、コレクション タイプを構築する場合でも、IList は、効果的なソフトウェア開発に必要な機能と柔軟性を提供します。 IronPDF は、興味のあるユーザー向けにPDF ライブラリの無料試用版を提供しており、ライセンスは $799 からご利用いただけます。

よくある質問

C# における IList インターフェイスとは何ですか?

`IList` インターフェイスは、.NET Framework の Collections 名前空間の一部で、インデックスによってアクセスできる動的なコレクションの作成に使用されます。追加、挿入、削除、要素へのアクセスのためのメソッドを提供し、静的配列よりも柔軟性を提供します。

C#でHTMLをPDFに変換する方法は?

C# で IronPDF の `RenderHtmlAsPdf` メソッドを使用して HTML を PDF に変換できます。これにより、HTML 文字列、ファイル、URL を高品質な PDF ドキュメントに変換することができます。

IList インターフェイスの主なメソッドは何ですか?

`IList` インターフェイスの主要なメソッドには、`Add`、`Insert`、`Remove`、`RemoveAt`、および `IndexOf` が含まれます。これらのメソッドは、コレクション内の要素を動的に管理および変更するために不可欠です。

C#でカスタムIListを作成するにはどうすればよいですか?

C# でカスタム `IList` を作成するためには、クラス内で `IList` インターフェイスを実装し、`Add`、`Remove`、`IndexOf` などの必要なメソッドやプロパティをオーバーライドして、コレクションが要素をどのように処理するかをカスタマイズします。

IronPDF はどのようにして HTML から PDF を作成しますか?

IronPDF は `ChromePdfRenderer` クラスを使用して HTML コンテンツを PDF に変換します。これにより、HTML 文字列、ファイル、URL からの変換をサポートし、ウェブコンテンツからの正確な PDF 作成を保証します。

データの IList から PDF を生成できますか?

はい、IList を繰り返し処理して HTML 文字列を構築し、IronPDF の `ChromePdfRenderer` を使用して HTML を PDF ドキュメントに変換し、`SaveAs` メソッドを使用して保存することで、IList から PDF を生成できます。

IList がサポートしている高度な操作は何ですか?

`IList` の高度な操作には、`Contains` を使用してコレクションが特定のオブジェクトを含んでいるかどうかを確認したり、`IndexOf` を使用してオブジェクトのインデックスを見つけたりすることが含まれます。これらの機能は、要素を手動で検索する必要なく、効率的にコレクションを管理するのに役立ちます。

C# で PDF 生成の問題をトラブルシュートするにはどうすればよいですか?

C# で PDF 生成に問題が発生した場合は、HTML コンテンツが正しくフォーマットされていること、最新の IronPDF バージョンを使用していることを確認してください。変換プロセス中にスローされた例外をチェックして、さらに洞察を得てください。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me