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

C#印刷リスト: クイックチュートリアル

C#では、リストを印刷することは一般的なタスクであり、さまざまな方法で達成でき、柔軟性とカスタマイズ性を提供します。 リストはC#の基本的なデータ構造であり、その内容を印刷できることはデバッグ、ロギング、またはユーザーへの情報表示に重要です。

この記事では、C#でリストを印刷するさまざまな方法を探ります。

C#におけるリストの基本

C#では、listはサイズが増減できる動的配列です。それはSystem.Collections.Generic名前空間の一部であり、コレクションのアイテムを効率的に扱うための柔軟性と効率性を提供します。 次のコードはシンプルな数値リストを作成します。

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
    }
}
using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ループを使用してリストを印刷

1. foreachループを使用

リストの要素を印刷するための伝統的で簡潔な方法はforeachループを使用することです。簡単な例を示します。

using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Printing list using foreach loop:");
        foreach (var number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Printing list using foreach loop:");
        foreach (var number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Collections.Generic
Friend Class Program
	Public Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
		Console.WriteLine("Printing list using foreach loop:")
		For Each number In numbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

この方法は簡潔で読みやすく、ほとんどのシナリオに適しています。

2. forループを使用

インデックスをより細かく制御したり、条件付きで要素を印刷したい場合は、forループを使用できます。ここに文字列リストの例があります。

using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        // Create list of strongly typed objects
        List<string> colors = new List<string> { "Red", "Green", "Blue", "Yellow" };
        Console.WriteLine("Printing list using for loop:");
        for (int index = 0; index < colors.Count; index++)
        {
            Console.WriteLine($"Color at index {index}: {colors[index]}");
        }
    }
}
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        // Create list of strongly typed objects
        List<string> colors = new List<string> { "Red", "Green", "Blue", "Yellow" };
        Console.WriteLine("Printing list using for loop:");
        for (int index = 0; index < colors.Count; index++)
        {
            Console.WriteLine($"Color at index {index}: {colors[index]}");
        }
    }
}
Imports System
Imports System.Collections.Generic
Friend Class Program
	Public Shared Sub Main()
		' Create list of strongly typed objects
		Dim colors As New List(Of String) From {"Red", "Green", "Blue", "Yellow"}
		Console.WriteLine("Printing list using for loop:")
		For index As Integer = 0 To colors.Count - 1
			Console.WriteLine($"Color at index {index}: {colors(index)}")
		Next index
	End Sub
End Class
$vbLabelText   $csharpLabel

このアプローチはインデックスにアクセスしたり、印刷中に特定のロジックを適用したりする必要がある場合に有益です。

リストの要素を逆順に印刷

リストを逆順に印刷するには、Reverseメソッドを利用することができます。 この方法はリストの要素の順序を逆にし、それらを通してイテレートして印刷できるようにします。

1. List.Reverseメソッドを使用

たとえば、Reverseメソッドを使用してリストを逆順に印刷し、各要素を印刷できます。

using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        numbers.Reverse();
        foreach (var number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        numbers.Reverse();
        foreach (var number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Collections.Generic
Friend Class Program
	Public Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
		numbers.Reverse()
		For Each number In numbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

2. LINQ OrderByDescendingを使用

OrderByDescendingメソッドを使用して、LINQのジェネリッククラスから指定されたコレクションの要素を並べ替えることもできます。

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        var reversedNumbers = numbers.OrderByDescending(n => n);
        foreach (var number in reversedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        var reversedNumbers = numbers.OrderByDescending(n => n);
        foreach (var number in reversedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq

Friend Class Program
	Public Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
		Dim reversedNumbers = numbers.OrderByDescending(Function(n) n)
		For Each number In reversedNumbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

要素の数を数えて印刷

リストの要素数を数えることは一般的な操作です。 Countプロパティはこの目的に使用できます。 数を取得したら、それを簡単に印刷できます。

1. List.Countプロパティを使用

using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        int count = names.Count;
        Console.WriteLine($"Number of elements: {count}");
    }
}
using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        int count = names.Count;
        Console.WriteLine($"Number of elements: {count}");
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Program
	Public Shared Sub Main()
		Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
		Dim count As Integer = names.Count
		Console.WriteLine($"Number of elements: {count}")
	End Sub
End Class
$vbLabelText   $csharpLabel

2. LINQ Countメソッドを使用

LINQが好まれる場合、それもカウントに使用できます。

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        int count = names.Count();
        Console.WriteLine($"Number of elements: {count}");
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        int count = names.Count();
        Console.WriteLine($"Number of elements: {count}");
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq

Friend Class Program
	Public Shared Sub Main()
		Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
		Dim count As Integer = names.Count()
		Console.WriteLine($"Number of elements: {count}")
	End Sub
End Class
$vbLabelText   $csharpLabel

指定されたインデックスでのリスト要素の印刷

指定したインデックスでの要素の印刷は、そのインデックスでリストにアクセスすることを伴います。 これにより、異なる場所の要素にアクセスすることができ、潜在的なインデックス範囲外のシナリオを処理できます。

using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        List<double> prices = new List<double> { 19.99, 29.99, 39.99 };
        int indexToPrint = 1;
        if (indexToPrint >= 0 && indexToPrint < prices.Count)
        {
            Console.WriteLine($"Element at index {indexToPrint}: {prices[indexToPrint]}");
        }
        else
        {
            Console.WriteLine("Index out of range.");
        }
    }
}
using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        List<double> prices = new List<double> { 19.99, 29.99, 39.99 };
        int indexToPrint = 1;
        if (indexToPrint >= 0 && indexToPrint < prices.Count)
        {
            Console.WriteLine($"Element at index {indexToPrint}: {prices[indexToPrint]}");
        }
        else
        {
            Console.WriteLine("Index out of range.");
        }
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Program
	Public Shared Sub Main()
		Dim prices As New List(Of Double) From {19.99, 29.99, 39.99}
		Dim indexToPrint As Integer = 1
		If indexToPrint >= 0 AndAlso indexToPrint < prices.Count Then
			Console.WriteLine($"Element at index {indexToPrint}: {prices(indexToPrint)}")
		Else
			Console.WriteLine("Index out of range.")
		End If
	End Sub
End Class
$vbLabelText   $csharpLabel

これらの例は、さまざまなシナリオでリストの要素を印刷するための基礎を提供します。 listクラスが提供する印刷に使用できる他の便利なメソッドもあります。

いくつかの便利な方法は次のとおりです:

  • Remove: Remove()メソッドはC#リストの最初の出現を削除します。
  • RemoveAll: RemoveAll()メソッドは指定された条件に基づいて要素を削除するために使用されます。
  • RemoveRange: RemoveRange()メソッドは、指定されたインデックスとカウントパラメータに基づいて要素の範囲を削除します。
  • Add: Add()メソッドはリストの最後に1つの要素を追加するだけです。
  • AddRange: AddRange()メソッドは、指定されたコレクションの要素を末尾に追加できます。
  • Clear: Clear()メソッドは、リストからすべての要素を削除します。
  • Insert: Insert()メソッドは指定されたインデックスでリストに要素を挿入します。
  • ForEach: ForEach()メソッドは、各要素に対して特定のアクションを実行するために使用されます。例:各リスト値を効率的に印刷します。
  • ToArray: ToArray()メソッドはリストを新しい配列にコピーします。

今、あなたはあなたの要件に最適なアプローチを選び、C#コードの可読性と効率を向上させることができます。

String.Joinメソッド

String.Joinメソッドは、指定されたセパレータで配列内の要素を単一の文字列に結合するための簡便な方法を提供します。 これは、リストのフォーマットされた文字列表現を作成するのに役立ちます。

using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        string result = string.Join(", ", numbers);
        Console.WriteLine(result);
    }
}
using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        string result = string.Join(", ", numbers);
        Console.WriteLine(result);
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Program
	Public Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
		Dim result As String = String.Join(", ", numbers)
		Console.WriteLine(result)
	End Sub
End Class
$vbLabelText   $csharpLabel

ここで、リストnumbersの要素たちはカンマとスペースで区切られた文字列に結合され、フォーマットされた出力となります。 並べ替えの方法もリストの要素を印刷する前に使用できます。

LINQを使用した高度なシナリオ

より複雑なシナリオでは、印刷前に要素をフィルターし、変換し、またはフォーマットしたい場合は、言語統合クエリ(LINQ)が有用です。

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
        Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
        Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq

Friend Class Program
	Public Shared Sub Main()
		Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
		Dim evenNumbers As List(Of Integer) = numbers.Where(Function(n) n Mod 2 = 0).ToList()
		Console.WriteLine("Even numbers: " & String.Join(", ", evenNumbers))
	End Sub
End Class
$vbLabelText   $csharpLabel

この例では、LINQを使用して元のリストから偶数を除外しています。Where()メソッドにはラムダ式が適用され、ToList()メソッドにより結果が再びリストに変換されます。

C# リスト印刷(開発者向けの仕組み):図1 - コンソール出力:偶数:2, 4

カスタムオブジェクトとToString()メソッド

カスタムオブジェクトのリストがある場合、オブジェクトクラスでToStringメソッドをオーバーライドして意味のある表現を提供することを推奨します。 次の例でその方法を示します。

using System;
using System.Collections.Generic;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public override string ToString()
    {
        return $"{Name}, {Age} years old";
    }
}

class Program
{
    public static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { Name = "Alice", Age = 30 },
            new Person { Name = "Bob", Age = 25 }
        };
        foreach (Person person in people)
        {
            Console.WriteLine(person);
        }
    }
}
using System;
using System.Collections.Generic;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public override string ToString()
    {
        return $"{Name}, {Age} years old";
    }
}

class Program
{
    public static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { Name = "Alice", Age = 30 },
            new Person { Name = "Bob", Age = 25 }
        };
        foreach (Person person in people)
        {
            Console.WriteLine(person);
        }
    }
}
Imports System
Imports System.Collections.Generic

Friend Class Person
	Public Property Name() As String
	Public Property Age() As Integer
	Public Overrides Function ToString() As String
		Return $"{Name}, {Age} years old"
	End Function
End Class

Friend Class Program
	Public Shared Sub Main()
		Dim people As New List(Of Person) From {
			New Person With {
				.Name = "Alice",
				.Age = 30
			},
			New Person With {
				.Name = "Bob",
				.Age = 25
			}
		}
		For Each person As Person In people
			Console.WriteLine(person)
		Next person
	End Sub
End Class
$vbLabelText   $csharpLabel

ToString()メソッドをクラスPersonでオーバーライドすることにより、そのクラスのインスタンスが文字列として表現される方法を制御します。 これによりリストの印刷時の可読性が向上します。

C# リスト印刷(開発者向けの仕組み):図2 - コンソール出力

IronPrintの紹介 - C#印刷ライブラリ

IronPrintは強力で展開可能な印刷ライブラリとして際立っており、精度、使いやすさ、速度を重視しています。 そのクロスプラットフォームサポートとさまざまなドキュメントフォーマットとの互換性により、.NET開発者がアプリケーションで効率的な印刷ソリューションを求める際の価値あるツールとなります。

C# リスト印刷(開発者向けの仕組み):図3 - IronPrint for .NET:C#印刷ライブラリ

主要機能

ここでは、IronPrintがC#アプリケーションで実際のドキュメントを印刷するために突出するいくつかの重要な特徴を示します。

1. クロスプラットフォーム互換性

  • .NETバージョンサポート:.NET 8, 7, 6, 5, Core 3.1+
  • オペレーティングシステム:Windows (7+, Server 2016+), macOS (10+), iOS (11+), Android API 21+ (v5 "Lollipop")
  • プロジェクトタイプ:モバイル (Xamarin & MAUI & Avalonia), デスクトップ (WPF & MAUI & Windows Avalonia), コンソール (App & Library)

2. サポートフォーム

  • PDF, PNG, HTML, TIFF, GIF, JPEG, IMAGE, BITMAPを含む様々なドキュメント形式を処理することができます。
  • ドキュメントの要件に応じて印刷設定をカスタマイズできます。

3. 簡単なインストール

NuGetパッケージマネージャーコンソールを使用してIronPrintライブラリをインストールします。

Install-Package IronPrint

また、Visual Studioを使用してプロジェクトにインストールすることもできます。 ソリューションエクスプローラーでプロジェクトを右クリックし、ソリューション管理のNuGetパッケージをクリックします。 NuGetブラウズタブで"ironprint"を検索し、検索結果から最新のIronPrintパッケージを選択し、インストールボタンをクリックしてプロジェクトに追加します。

IronPrintを使った印刷:コード例

1. ドキュメントを印刷

IronPrintはPrintメソッドを使用して、ドキュメントをサイレントに印刷します。 物理的なプリンターが利用できない場合、OSによって指定されたデフォルトのプリンターを使用して印刷します。

using IronPrint;

class Program
{
    static void Main()
    {
        // Print the document
        Printer.Print("newDoc.pdf");
    }
}
using IronPrint;

class Program
{
    static void Main()
    {
        // Print the document
        Printer.Print("newDoc.pdf");
    }
}
Imports IronPrint

Friend Class Program
	Shared Sub Main()
		' Print the document
		Printer.Print("newDoc.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

2. ダイアログ付きで印刷

印刷時により良い制御を得るためにprintダイアログを表示する専用メソッドも提供しています。 ShowPrintDialogAsyncメソッドは非同期で印刷するためにも使用できます。

using IronPrint;

class Program
{
    static void Main()
    {
        // Show print dialog
        Printer.ShowPrintDialog("newDoc.pdf");
    }
}
using IronPrint;

class Program
{
    static void Main()
    {
        // Show print dialog
        Printer.ShowPrintDialog("newDoc.pdf");
    }
}
Imports IronPrint

Friend Class Program
	Shared Sub Main()
		' Show print dialog
		Printer.ShowPrintDialog("newDoc.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

3. 印刷設定のカスタマイズ

IronPrintは、ドキュメントの印刷を微細に制御するためのさまざまなprint設定を提供します。

using IronPrint;

class Program
{
    static void Main()
    {
        // Configure print settings
        PrintSettings printSettings = new PrintSettings()
        {
            Dpi = 150,
            NumberOfCopies = 2,
            PaperOrientation = PaperOrientation.Portrait
        };
        // Print the document
        Printer.Print("newDoc.pdf", printSettings);
    }
}
using IronPrint;

class Program
{
    static void Main()
    {
        // Configure print settings
        PrintSettings printSettings = new PrintSettings()
        {
            Dpi = 150,
            NumberOfCopies = 2,
            PaperOrientation = PaperOrientation.Portrait
        };
        // Print the document
        Printer.Print("newDoc.pdf", printSettings);
    }
}
Imports IronPrint

Friend Class Program
	Shared Sub Main()
		' Configure print settings
		Dim printSettings As New PrintSettings() With {
			.Dpi = 150,
			.NumberOfCopies = 2,
			.PaperOrientation = PaperOrientation.Portrait
		}
		' Print the document
		Printer.Print("newDoc.pdf", printSettings)
	End Sub
End Class
$vbLabelText   $csharpLabel

使用されるクラスとメソッドについてより良い理解を得るために、APIリファレンスページをご覧ください。

結論

C#でリストを印刷することは、データの複雑さや望む出力に基づいて適切な方法を選択することが含まれます。 単純なループ使用、String.Join()、LINQ、またはカスタムオブジェクトのToString()メソッドのカスタマイズを使用するかどうかにかかわらず、これらのアプローチを理解することは、C#アプリケーションでリストの内容を効果的に表示するための力を与えます。 これらの手法を試し、特定の用途に最も適したものを選びましょう。

IronPrintは精度、使いやすさ、速度を求める場合の印刷ライブラリです。 WebAppsを構築している場合、MAUI、Avaloniaと作業している場合、または.NET関連の何かをしている場合でも、IronPrintはあなたをサポートします。 IronPrintの詳細な情報については、このドキュメントページをご覧ください。

IronPrintは有料のライブラリですが、無料トライアルが利用可能です。 ライブラリをここからダウンロードしてお試しください!

よくある質問

C# でリストを印刷するにはどうすればいいですか?

C# でリストを印刷するために IronPrint を使用することができます。 foreach または for ループを使用してリスト要素を反復処理し、フォーマットされた出力を IronPrint に渡して印刷します。

C# で動的配列を使用する利点は何ですか?

C# の動的配列、またはリストは、サイズが増減できるため柔軟性を提供します。それらは System.Collections.Generic 名前空間の一部であり、コレクションの効率的な処理と操作を可能にします。

C# でリストを逆順に印刷するにはどうすればいいですか?

リストを逆順に印刷するには、Reverse メソッドまたは LINQ の OrderByDescending を使用し、逆順にしたリストを IronPrint で印刷することができます。

印刷用にリストを文字列としてフォーマットするにはどうすればいいですか?

String.Join メソッドを使用して、リスト要素を指定されたセパレータで連結し、単一のフォーマットされた文字列にすることができます。このフォーマットされた文字列を IronPrint を使用して印刷できます。

カスタムオブジェクトの印刷における ToString メソッドの役割は何ですか?

ToString メソッドをオーバーライドすることで、カスタムオブジェクトのインスタンスが文字列としてどのように表現されるかを定義でき、IronPrint で印刷されたときの読みやすさが向上します。

C# で特定の要素をフィルタリングして印刷するにはどうすればいいですか?

LINQ メソッドの Where を使用して、リストから特定の要素をフィルタリングして選択できます。フィルタリングされた結果を IronPrint を使用して印刷できます。

.NET 向けの印刷ライブラリをインストールするにはどうすればいいですか?

NuGet Package Manager Console を使用してコマンド Install-Package IronPrint を入力するか、Visual Studio の NuGet Package Manager を通じて IronPrint をインストールできます。

.NET 開発者向けに IronPrint が提供する機能は何ですか?

IronPrint はクロスプラットフォーム互換性、さまざまなドキュメント形式のサポート、サイレント印刷、印刷ダイアログ、およびカスタマイズ可能な印刷設定を提供し、.NET 開発者にとって強力な選択肢です。

Curtis Chau
テクニカルライター

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

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