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

C#のリストを初期化する方法(開発者向けの仕組み)

リストはSystem.Collections.Generic名前空間の一部であり、データのコレクションを処理するための柔軟性があります。 C#のリストは動的であり、実行時にサイズを変更できます。この柔軟性は、要素の数が事前にわからない多くのソフトウェアエンジニアリングシナリオで非常に役立ちます。 C#のリストを初期化するさまざまな方法を詳しく見てみましょう。 基本的なテクニック、オブジェクト初期化子構文、コレクション初期化子、IronPDFライブラリについて説明します。

基本的なリストの初期化

リストを初期化するには、List<T>クラスのインスタンスを作成します。ここで、Tはリスト内の要素のタイプです。最も一般的なタイプはstringですが、任意のタイプを使用できます。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Initialize an empty list
        List<string> fruits = new List<string>();

        // Adding elements to the list
        fruits.Add("Apple");
        fruits.Add("Banana");
        fruits.Add("Cherry");

        // Display the list
        foreach (var fruit in fruits)
        {
            Console.WriteLine(fruit);
        }
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Initialize an empty list
        List<string> fruits = new List<string>();

        // Adding elements to the list
        fruits.Add("Apple");
        fruits.Add("Banana");
        fruits.Add("Cherry");

        // Display the list
        foreach (var fruit in fruits)
        {
            Console.WriteLine(fruit);
        }
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Program
	Shared Sub Main()
		' Initialize an empty list
		Dim fruits As New List(Of String)()

		' Adding elements to the list
		fruits.Add("Apple")
		fruits.Add("Banana")
		fruits.Add("Cherry")

		' Display the list
		For Each fruit In fruits
			Console.WriteLine(fruit)
		Next fruit
	End Sub
End Class
$vbLabelText   $csharpLabel

上記の例では、空のリストを作成し、Addメソッドを使用して要素を追加しました。 List<string>は文字列のリストを表し、Addメソッドを使用して値をリストに追加しました。

コレクション初期化子構文の使用

C#は、コレクション初期化子構文を使用してリストを初期化する簡潔な方法を提供します。 これにより、Addメソッドを何度も呼び出すことなく、リストを作成時に直接埋めることができます。

public void InitializeList()
{
    List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" };
}
public void InitializeList()
{
    List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" };
}
Public Sub InitializeList()
	Dim fruits As New List(Of String) From {"Apple", "Banana", "Cherry"}
End Sub
$vbLabelText   $csharpLabel

このコードは前の例と同じ結果を達成しますが、よりコンパクトな形式になっています。 コレクション初期化子を使用すると、リストを単一のステートメントで初期化できるため、コードの可読性が向上します。

オブジェクト初期化子とリストの初期化

オブジェクト初期化子構文は、主にカスタムオブジェクトを使用する際にリストを初期化する別の方法です。 オブジェクト初期化子がリストでどのように機能するかの例です:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Person> people = new List<Person>
{
    new Person { Name = "John", Age = 30 },
    new Person { Name = "Jane", Age = 25 },
    new Person { Name = "Jack", Age = 35 }
};
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Person> people = new List<Person>
{
    new Person { Name = "John", Age = 30 },
    new Person { Name = "Jane", Age = 25 },
    new Person { Name = "Jack", Age = 35 }
};
Friend Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Private people As New List(Of Person) From {
	New Person With {
		.Name = "John",
		.Age = 30
	},
	New Person With {
		.Name = "Jane",
		.Age = 25
	},
	New Person With {
		.Name = "Jack",
		.Age = 35
	}
}
$vbLabelText   $csharpLabel

この例では、オブジェクト初期化子を使用してPersonオブジェクトのリストを作成します。 PersonクラスにはNameAgeという2つのプロパティがあり、リスト作成時に明示的に値が割り当てられます。

最初のサイズを持つリストの作成

リストはサイズが動的であるが、リストがどのくらいの要素を保持するかが概ねわかっている場合、最初の容量を指定することができます。 これにより、メモリの再割り当て数を減らすことでパフォーマンスを向上させることができます。

List<string> fruits = new List<string>(10); // Initial size of 10
List<string> fruits = new List<string>(10); // Initial size of 10
Dim fruits As New List(Of String)(10) ' Initial size of 10
$vbLabelText   $csharpLabel

これは初期容量が10の空のリストを作成します。要素は追加されませんが、内部配列のサイズを変更せずに10個の要素を保持するのに十分なメモリを割り当てます。

配列からリストを初期化する

IEnumerable<T>引数を取るリストコンストラクターを使用して既存の配列からリストを初期化することもできます。 配列を持っていて、柔軟性のためにリストに変換したい場合に便利です。

// New String array of fruit
string[] fruitArray = { "Apple", "Banana", "Cherry" };
List<string> fruits = new List<string>(fruitArray);
// New String array of fruit
string[] fruitArray = { "Apple", "Banana", "Cherry" };
List<string> fruits = new List<string>(fruitArray);
' New String array of fruit
Dim fruitArray() As String = { "Apple", "Banana", "Cherry" }
Dim fruits As New List(Of String)(fruitArray)
$vbLabelText   $csharpLabel

ここでは、新しい配列を作成し、それをリストの初期化に使用します。これにより、fruitArray配列がリストに変換されます。配列を含む任意のIEnumerable<T>を初期化のためにリストコンストラクターに渡すことができます。

AddRangeメソッドの使用

既存のアイテムのコレクションがある場合、AddRangeメソッドを使用して複数の要素を一緒にリストに追加することができます。

List<string> fruits = new List<string> { "Apple", "Banana" };
string[] moreFruits = { "Cherry", "Date", "Elderberry" };
fruits.AddRange(moreFruits);
List<string> fruits = new List<string> { "Apple", "Banana" };
string[] moreFruits = { "Cherry", "Date", "Elderberry" };
fruits.AddRange(moreFruits);
Dim fruits As New List(Of String) From {"Apple", "Banana"}
Dim moreFruits() As String = { "Cherry", "Date", "Elderberry" }
fruits.AddRange(moreFruits)
$vbLabelText   $csharpLabel

この例では、二つの要素を持つリストから始め、配列から複数の新しいアイテムをAddRangeを使用して追加します。 このメソッドは、要素を一括で追加するため、複数の再割り当ての必要性を最小限に抑えることでパフォーマンスを向上させることができます。

カスタムオブジェクトでリストを初期化する

カスタムオブジェクトのリストを初期化する際には、オブジェクト初期化子とコレクション初期化子を組み合わせて、単一の式で複雑なデータ構造を作成することができます。

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 28 },
    new Person { Name = "Bob", Age = 32 },
    new Person { Name = "Charlie", Age = 40 }
};
List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 28 },
    new Person { Name = "Bob", Age = 32 },
    new Person { Name = "Charlie", Age = 40 }
};
Dim people As New List(Of Person) From {
	New Person With {
		.Name = "Alice",
		.Age = 28
	},
	New Person With {
		.Name = "Bob",
		.Age = 32
	},
	New Person With {
		.Name = "Charlie",
		.Age = 40
	}
}
$vbLabelText   $csharpLabel

この手法を使用すると、オブジェクトのリストを単一のステートメントで作成および初期化することができ、コードが簡潔で読みやすくなります。

拡張メソッドによるリストの初期化

リストをカスタムな方法で初期化するために、拡張メソッドを実装することもできます。 拡張メソッドは、既存のタイプに新しい機能を追加し、元の構造を変更することなく改善するメカニズムを提供します。

public static class ListExtensions
{
    public static List<T> InitializeWith<T>(this List<T> list, params T[] elements)
    {
        list.AddRange(elements);
        return list;
    }
}

// Usage
List<string> fruits = new List<string>().InitializeWith("Apple", "Banana", "Cherry");
public static class ListExtensions
{
    public static List<T> InitializeWith<T>(this List<T> list, params T[] elements)
    {
        list.AddRange(elements);
        return list;
    }
}

// Usage
List<string> fruits = new List<string>().InitializeWith("Apple", "Banana", "Cherry");
Public Module ListExtensions
	<System.Runtime.CompilerServices.Extension> _
	Public Function InitializeWith(Of T)(ByVal list As List(Of T), ParamArray ByVal elements() As T) As List(Of T)
		list.AddRange(elements)
		Return list
	End Function
End Module

' Usage
Private fruits As List(Of String) = (New List(Of String)()).InitializeWith("Apple", "Banana", "Cherry")
$vbLabelText   $csharpLabel

ここでは、要素をリストに追加し、リスト自体を返すInitializeWithという拡張メソッドを定義します。 これにより、リストの初期化と値の設定をチェーンすることができます。

IronPDF: C# PDFライブラリ

C# Initialize List (How It Works For Developers): 図1 - IronPDF: The C# PDF Library

If you have a list, like a list of fruits, you can quickly turn it into an HTML table and render it as a PDF using IronPDF, all in just a few lines of code. プロセスは簡単です: リストを初期化し、それをHTMLに変換し、IronPDFでPDFを生成します。 こちらが例です:

using IronPdf;
using System;
using System.Collections.Generic;
using System.Text;

class Program
{
    static void Main()
    {
        // Initialize a list of strings representing data
        List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" };

        // Convert the list to an HTML table
        StringBuilder htmlContent = new StringBuilder();
        htmlContent.Append("<table border='1'><tr><th>Fruit Name</th></tr>");
        foreach (var fruit in fruits)
        {
            htmlContent.Append($"<tr><td>{fruit}</td></tr>");
        }
        htmlContent.Append("</table>");

        // Render the HTML to PDF using IronPDF
        var Renderer = new ChromePdfRenderer();
        var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());

        // Save the PDF to a file
        PDF.SaveAs("FruitsList.pdf");
        Console.WriteLine("PDF generated successfully.");
    }
}
using IronPdf;
using System;
using System.Collections.Generic;
using System.Text;

class Program
{
    static void Main()
    {
        // Initialize a list of strings representing data
        List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" };

        // Convert the list to an HTML table
        StringBuilder htmlContent = new StringBuilder();
        htmlContent.Append("<table border='1'><tr><th>Fruit Name</th></tr>");
        foreach (var fruit in fruits)
        {
            htmlContent.Append($"<tr><td>{fruit}</td></tr>");
        }
        htmlContent.Append("</table>");

        // Render the HTML to PDF using IronPDF
        var Renderer = new ChromePdfRenderer();
        var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());

        // Save the PDF to a file
        PDF.SaveAs("FruitsList.pdf");
        Console.WriteLine("PDF generated successfully.");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Text

Friend Class Program
	Shared Sub Main()
		' Initialize a list of strings representing data
		Dim fruits As New List(Of String) From {"Apple", "Banana", "Cherry"}

		' Convert the list to an HTML table
		Dim htmlContent As New StringBuilder()
		htmlContent.Append("<table border='1'><tr><th>Fruit Name</th></tr>")
		For Each fruit In fruits
			htmlContent.Append($"<tr><td>{fruit}</td></tr>")
		Next fruit
		htmlContent.Append("</table>")

		' Render the HTML to PDF using IronPDF
		Dim Renderer = New ChromePdfRenderer()
		Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString())

		' Save the PDF to a file
		PDF.SaveAs("FruitsList.pdf")
		Console.WriteLine("PDF generated successfully.")
	End Sub
End Class
$vbLabelText   $csharpLabel

C# Initialize List (How It Works For Developers): 図2 - 例の出力

このコードはリストを初期化し、それをHTMLテーブルに変換し、IronPDFを使用してPDFファイルを作成します。データコレクションからPDFを生成するためのシンプルで直接的な方法です。

結論

C# Initialize List (How It Works For Developers): 図3 - IronPDFライセンスページ

C#でのリストの初期化は、すべてのソフトウェアエンジニアが習得すべき基本的な概念です。 単純な文字列のリストから複雑なオブジェクトのリストまで、C#はリストを効率的に初期化および設定するためのいくつかの方法を提供します。 基本的な初期化からオブジェクト初期化子およびコレクション初期化子に至るまで、これらのテクニックはクリーンで簡潔で保守可能なコードの記述に役立ちます。

IronPDFは、最初の投資をせずに製品を試用できる無料トライアルを提供しています。 ニーズに合っていると確信できた場合、ライセンスは$799から購入できます。

よくある質問

C# でリストを初期化する基本的な方法は何ですか?

C# では、リストを初期化するには、要素の型が T である List<T> クラスのインスタンスを作成します。例えば、List<string> fruits = new List<string>(); はリストを初期化する基本的な方法です。

C# でコレクション初期化子構文がリストの初期化をどのように改善できますか?

コレクション初期化子構文により、作成中にリストに直接データを追加でき、コードを簡潔にします。例えば:List<string> fruits = new List<string> { 'Apple', 'Banana', 'Cherry' };

リストを初期化する際のオブジェクト初期化子構文の目的は何ですか?

オブジェクト初期化子構文は、リストにカスタムオブジェクトを初期化する際に有益で、リストが作成されるときにプロパティ値を設定できます。例えば、リスト内に new Person { Name = 'John', Age = 30 }; など。

リストに初期容量を設定できますか、それはなぜ役立つのでしょうか?

はい、リストに初期容量を設定すると、リストが成長するにつれてメモリアロケーションを減らしてパフォーマンスを向上させることができます。例:List<string> fruits = new List<string>(10);

C# で既存の配列からリストを初期化するにはどうすればよいですか?

リストのコンストラクタが受け入れる IEnumerable<T> を使用して、配列からリストを初期化できます。例:List<string> fruits = new List<string>(fruitArray);

AddRange メソッドはリストの初期化でどのような役割を果たしますか?

AddRangeメソッドは、コレクションからリストに複数の要素を一度に追加し、再割り当てを最小限に抑えることでパフォーマンスを最適化します。例: fruits.AddRange(moreFruits);.

初期化子を使用してリストにカスタムオブジェクトを初期化するにはどうすればよいですか?

カスタムオブジェクトは、オブジェクトおよびコレクション初期化子を組み合わせることでリストに初期化でき、リストの作成が一つの式で行えます。例:new List<Person> { new Person { Name = 'Alice', Age = 28 } };

拡張メソッドとは何ですか、リストの初期化とどのように関連していますか?

拡張メソッドは既存の型に新しい機能を追加することを可能にします。たとえば、InitializeWith のような拡張メソッドを記述して、リストの初期化とデータのポピュレーションを効率化できます。

C# でリストを PDF に変換するにはどうすればよいですか?

IronPDF を使用して、リストを HTML テーブルとして変換し、PDF としてレンダリングすることができ、C# のデータコレクションからの PDF 生成プロセスを簡素化できます。

データコレクションから PDF を生成するための無料トライアルはありますか?

はい、IronPDF は無料トライアルを提供しており、初回購入なしでデータコレクションからの PDF 生成機能をテストできます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。