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

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

IListの紹介

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

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

public interface IList宣言は、.NETのIList契約に従うカスタムコレクション作成の基本です。 IListには、コレクションの要素をアクセス、カウント、要素の追加や挿入、または削除でコレクションを変更するためのプロパティとメソッドが含まれています。 IListインターフェースで定義されている主要プロパティとメソッドをいくつか紹介します:

  • IsFixedSizeIsReadOnlyのようなプロパティは、コレクションが固定サイズか読み取り専用であるかを示します。
  • AddInsertRemoveRemoveAtのようなメソッドは、コレクション内の要素を変更するために使用されます。 要素を追加、挿入、削除できます。
  • 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

この例では、ArrayListを使用してIListインスタンスを作成しましたが、このクラスは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を実装するコレクションのように振る舞うことができます。 この例は、.NETに組み込まれているIListを実装する任意のコレクションのように、インデックスによるアクセス、変更(アイテムの追加、挿入、削除)が可能であり、反復処理も可能であるコレクションを作成する方法を実証しています。

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)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。