.NET ヘルプ

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

Kannaopat Udonpant
カンナパット・ウドンパント
2024年6月6日
共有:

IListの紹介

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

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

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

  • IsFixedSizeIsReadOnly のようなプロパティは、コレクションが固定サイズか、読み取り専用かどうかをそれぞれ示します。
  • コレクション内の要素を変更するために、Add、void InsertRemove、および RemoveAt のようなメソッドが使用されます。 要素の追加、挿入、削除が可能です。

    • 次の内容を日本語に翻訳してください:

IndexOfメソッドは要素を見つけるためのもので、Itemプロパティは(C#でのインデクサ)インデックスに基づいて要素の取得および設定を可能にします。

パブリックインターフェイス IList の実用的な使用法

IList の動作を示すために、シンプルな例を作成してみましょう。 この一般的なバージョンの例では、IListを宣言し、アイテムを追加し、その内容を反復処理する方法を示します。

IListを作成および変更する

まず、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 のインスタンスを IList を実装するクラスである ArrayList を使って作成しました。 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機能を追加できます。 IronPDFにはPDFファイルの編集、結合、分割機能も含まれており、PDFの操作を包括的にコントロールすることができます。

IronPDFは、以下に優れていますHTMLからPDF変換時に、元のレイアウトとスタイルを正確に保持します。 それは、レポート、請求書、およびドキュメントなどのWebベースのコンテンツから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から取得可能です。

Kannaopat Udonpant
カンナパット・ウドンパント
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、カンナパットは日本の北海道大学から環境資源学の博士号を取得しました。学位を取得する過程で、カンナパットはバイオプロダクション工学部に所属する車両ロボティクス研究所のメンバーにもなりました。2022年には、C#のスキルを活かしてIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。カンナパットは、IronPDFで使用されているコードの大部分を作成した開発者から直接学べることに価値を見いだしています。同僚との学び合いに加えて、Iron Softwareで働くことの社会的側面も楽しんでいます。コードやドキュメントを書いていない時には、カンナパットは通常、PS5でゲームをしたり、『The Last of Us』を再視聴したりしています。
< 以前
C# リンクドリスト (開発者向けの仕組み)
次へ >
開発者向けのPolly Retry (その仕組み)