.NET ヘルプ

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

チャクニット・ビン
チャクニット・ビン
2024年5月20日
共有:

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メソッドを使用してリストを逆順にしてから、各要素を印刷することができます。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Reverse();
foreach (var number in numbers)
{
    Console.WriteLine(number);
}
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Reverse();
foreach (var number in numbers)
{
    Console.WriteLine(number);
}
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
$vbLabelText   $csharpLabel

2.LINQ OrderByDescendingの使用法

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

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

要素数のカウントと印刷

リスト内の要素数を数えるのはよくある操作だ。 Count プロパティまたは Count メソッドをこの目的で使用できます。 カウントができたら、簡単に印刷できる。

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

List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count;
Console.WriteLine($"Number of elements: {count}");
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count;
Console.WriteLine($"Number of elements: {count}");
Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
Dim count As Integer = names.Count
Console.WriteLine($"Number of elements: {count}")
$vbLabelText   $csharpLabel

2.LINQ Countメソッドの使用

List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count();
Console.WriteLine($"Number of elements: {count}");
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count();
Console.WriteLine($"Number of elements: {count}");
Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
Dim count As Integer = names.Count()
Console.WriteLine($"Number of elements: {count}")
$vbLabelText   $csharpLabel

指定したインデックスのリスト要素を印刷する

指定したインデックスの要素を印刷するには、そのインデックスのリストにアクセスする必要があります。 これにより、異なる場所にあるエレメントにアクセスし、インデックスが範囲外になる可能性のあるシナリオを確実に処理することができる:

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

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

いくつかの便利な方法がある:

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

    あなたの要件に最も適したアプローチを選択し、C#(シーシャープ)コードの可読性と効率を高めることができます。

String.Joinメソッド

String.Join メソッドは、指定されたセパレータでリストの要素を1つの文字列に連結する簡潔な方法を提供します。 これは、リストのフォーマットされた文字列表現を作成するのに便利である。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
string result = string.Join(", ", numbers);
Console.WriteLine(result);
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
string result = string.Join(", ", numbers);
Console.WriteLine(result);
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Dim result As String = String.Join(", ", numbers)
Console.WriteLine(result)
$vbLabelText   $csharpLabel

ここでは、numbers リストの要素がコンマとスペースで区切られた文字列として結合され、フォーマットされた出力が得られます。 ソート・メソッドは、リスト要素を印刷する前にも使える。

高度なシナリオにLINQを使う

より複雑なシナリオの場合、印刷前に要素をフィルタリング、変換、またはフォーマットしたい場合、Language-Integrated Query (LINQ) が有益です。

using System.Linq;
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.Linq;
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.Linq
Private numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Private evenNumbers As List(Of Integer) = numbers.Where(Function(n) n Mod 2 = 0).ToList()
Console.WriteLine("Even numbers: " & String.Join(", ", evenNumbers))
$vbLabelText   $csharpLabel

この例では、LINQを使用して元のリストから偶数をフィルタリングしています。Where() メソッドはラムダ式と共に適用され、ToList() メソッドを使用して結果を再びリストに変換します。

C# リストを印刷する(開発者向けの動作方法):図1 - コンソール出力: 偶数: 2, 4

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

カスタムオブジェクトのリストがある場合は、意味のある表現を行うために、オブジェクトクラスでToStringメソッドをオーバーライドすることをお勧めします。 次の例はその方法を示している:

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);
    }
    }
}
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);
    }
    }
}
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

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

C# リストを印刷する(開発者向け動作方法):図2 - コンソール出力

IronPrint の紹介 - C# (シーアンドナム; 印刷ライブラリ)

IronPrint は、正確さ、使いやすさ、スピードを重視した強力で導入可能な印刷ライブラリとして際立っています。 クロスプラットフォームのサポートとさまざまな文書形式との互換性により、アプリケーションで効率的な印刷ソリューションを求める.NET開発者にとって価値あるツールとなっています。

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

主な機能

ここでは、C# (シーシャープ)アプリケーションで物理的なドキュメントを印刷するためにIronPrintを際立たせる重要な機能を紹介します:

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)、コンソール (アプリ & ライブラリ)

2.対応フォーマット

  • PDF、PNG、HTML、TIFF、GIF、JPEG、IMAGE、BITMAPなど、さまざまなドキュメント形式を扱えます。
  • ドキュメントの要件に応じて印刷設定をカスタマイズします。

3.簡単な取り付け

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

Install-Package IronPrint
Install-Package IronPrint
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPrint
$vbLabelText   $csharpLabel

あるいは、Visual Studioを使ってプロジェクトにインストールすることもできる。 ソリューション・エクスプローラーでプロジェクトを右クリックし、[Manage NuGet Package Manager for Solutions]をクリックします。 NuGet のブラウズタブで"ironprint"を検索し、検索結果から最新バージョンの IronPrint パッケージを選択して、インストールボタンをクリックしてプロジェクトに追加します。

IronPrint:コード例

1.印刷ドキュメント

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

using IronPrint;
// Print the document
Printer.Print("newDoc.pdf");
using IronPrint;
// Print the document
Printer.Print("newDoc.pdf");
Imports IronPrint
' Print the document
Printer.Print("newDoc.pdf")
$vbLabelText   $csharpLabel

2.ダイアログ付き印刷

印刷中のより良いコントロールのために、専用の方法でprintダイアログを表示する機能も提供します。 ShowPrintDialogAsync メソッドは、非同期に印刷するためにも使用できます。

using IronPrint;
// Show print dialog
Printer.ShowPrintDialog("newDoc.pdf");
using IronPrint;
// Show print dialog
Printer.ShowPrintDialog("newDoc.pdf");
Imports IronPrint
' Show print dialog
Printer.ShowPrintDialog("newDoc.pdf")
$vbLabelText   $csharpLabel

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

IronPrintは印刷ドキュメントに対する詳細な制御を可能にする様々なprint設定を提供します。

using IronPrint;
// Configure print settings
PrintSettings printSettings = new PrintSettings();
printSettings.Dpi = 150;
printSettings.NumberOfCopies = 2;
printSettings.PaperOrientation = PaperOrientation.Portrait;
// Print the document
Printer.Print("newDoc.pdf", printSettings);
using IronPrint;
// Configure print settings
PrintSettings printSettings = new PrintSettings();
printSettings.Dpi = 150;
printSettings.NumberOfCopies = 2;
printSettings.PaperOrientation = PaperOrientation.Portrait;
// Print the document
Printer.Print("newDoc.pdf", printSettings);
Imports IronPrint
' Configure print settings
Private printSettings As New PrintSettings()
printSettings.Dpi = 150
printSettings.NumberOfCopies = 2
printSettings.PaperOrientation = PaperOrientation.Portrait
' Print the document
Printer.Print("newDoc.pdf", printSettings)
$vbLabelText   $csharpLabel

クラスとメソッドの理解を深めるには、APIリファレンスページをご覧ください。

結論

C#(シーシャープ)でリストを印刷するには、データの複雑さと必要な出力に基づいて適切なメソッドを選択する必要があります。 単純なループ、String.Join()、LINQ、またはカスタムオブジェクトのToString()メソッドをカスタマイズする場合でも、これらのアプローチを理解することで、C#アプリケーションでリストの内容を効果的に表示することができます。 これらのテクニックを試してみて、特定のユースケースに最も適したものを選択する。

IronPrint は、精度、使いやすさ、および速度を求める場合の定番の印刷ライブラリです。 Webアプリケーションの構築、MAUI、Avalonia、その他.NETに関連することなら何でも、IronPrintにお任せください。 IronPrintの詳細情報については、このドキュメントページをご覧ください。

IronPrintは有料ライブラリですが、無料トライアルがあります。 こちらからライブラリをダウンロードして試してみてください!

チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。
< 以前
マスターC#プリント関数:開発者ガイド
次へ >
C# プリントコンソール: ステップバイステップガイド