.NET ヘルプ

C#プリントラインの効果的な使い方

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

C#(シーシャープ)での行の印刷は、コンソール・アプリケーションの基本的な側面であり、コンソール画面にテキストや指定した値を表示することです。 標準出力ストリームを扱う場合でも、文字列のフォーマットを行う場合でも、行を効率的に出力する方法を理解することは、C# コンソールアプリケーションにおいて重要です。

この記事では、C#(シーシャープ)の行の印刷に関するさまざまな方法とテクニックを探ります。

プリントラインの基本

C# では、行を印刷するには通常、Console.WriteLine メソッドを使用します。 まずは簡単な例を見てみよう:

using System;
class Program {
    public static void Main() {
        Console.WriteLine("Hello, C# Print Line!");
    }
}
using System;
class Program {
    public static void Main() {
        Console.WriteLine("Hello, C# Print Line!");
    }
}
Imports System
Friend Class Program
	Public Shared Sub Main()
		Console.WriteLine("Hello, C# Print Line!")
	End Sub
End Class
$vbLabelText   $csharpLabel

上記のコードでは、Console.WriteLine 文が指定された文字列値("Hello, C# Print Line!")を出力し、その後に改行を追加します。これは、出力の末尾に行終端記号を追加する WriteLine メソッドによって実現されます。

ライン・ターミネーター

行末文字は、行の終わりを示す特別な文字またはシーケンスです。最も一般的な行末文字はキャリッジリターン('\r')とラインフィード('\n')です。 C#では、Console.WriteLineメソッドがオペレーティングシステムに基づいた適切な現在の行終端子を使用することを処理します。

public static void Main() {
    Console.WriteLine("This is on the first line.");
    Console.WriteLine("This is on the second line.");
}
public static void Main() {
    Console.WriteLine("This is on the first line.");
    Console.WriteLine("This is on the second line.");
}
Public Shared Sub Main()
	Console.WriteLine("This is on the first line.")
	Console.WriteLine("This is on the second line.")
End Sub
$vbLabelText   $csharpLabel

上記の例では、プログラムの実行後、各Console.WriteLineがC#のコンソールウィンドウに新しい行を生成し、指定された2行が出力されます。

C# Print Line(開発者向けの動作方法):図1 - 前のコードからのコンソール出力

ライン・ターミネーターの指定

行終端子を明示的に制御する必要がある場合は、Console.Write メソッドを使用し、必要な行終端子を手動で追加することができます。

public static void Main() {
    Console.Write("This is on the first line.");
    Console.Write('\r'); // Carriage return
    Console.Write("This is on the same line but very far left position.");
}
public static void Main() {
    Console.Write("This is on the first line.");
    Console.Write('\r'); // Carriage return
    Console.Write("This is on the same line but very far left position.");
}
Imports Microsoft.VisualBasic

Public Shared Sub Main()
	Console.Write("This is on the first line.")
	Console.Write(ControlChars.Cr) ' Carriage return
	Console.Write("This is on the same line but very far left position.")
End Sub
$vbLabelText   $csharpLabel

この例では、キャリッジリターン('\r')を使用してカーソルを行の先頭に位置させることで、テキストの後半部分が左端に表示され、以前の出力を上書きします。

C# Print Line(開発者向けの仕組み): 図 2 - コンソール出力での \r の表示

複数行の印刷

複数行を Console.WriteLine 文を繰り返さずに印刷するには、可変長引数リストを使用できます。

public static void Main() {
    PrintLines("Line 1", "Line 2", "Line 3");
}
static void PrintLines(params string [] lines) {
    foreach (var line in lines) {
        Console.WriteLine(line);
    }
}
public static void Main() {
    PrintLines("Line 1", "Line 2", "Line 3");
}
static void PrintLines(params string [] lines) {
    foreach (var line in lines) {
        Console.WriteLine(line);
    }
}
Public Shared Sub Main()
	PrintLines("Line 1", "Line 2", "Line 3")
End Sub
Shared Sub PrintLines(ParamArray ByVal lines() As String)
	For Each line In lines
		Console.WriteLine(line)
	Next line
End Sub
$vbLabelText   $csharpLabel

私たちが作成したPrintLinesメソッドは、指定された文字列パラメータの配列を受け取り、指定された文字列値を印刷するための任意の数の新しい行を渡すことができます。

C# Print Line(開発者向けの仕組み):図3 - PrintLinesメソッドを使用したコンソール出力

フォーマット出力

さまざまなデータ型を扱う際には、出力のフォーマットが極めて重要です。Console.WriteLine メソッドは、指定されたオブジェクトとフォーマット情報を受け入れるいくつかのオーバーロードを提供します。

public static void Main() {
    int answer = 42;
    string name = "John Doe";
    Console.WriteLine("The answer is {0}.", answer);
    Console.WriteLine("Hello, {0}!", name);
}
public static void Main() {
    int answer = 42;
    string name = "John Doe";
    Console.WriteLine("The answer is {0}.", answer);
    Console.WriteLine("Hello, {0}!", name);
}
Public Shared Sub Main()
	Dim answer As Integer = 42
	Dim name As String = "John Doe"
	Console.WriteLine("The answer is {0}.", answer)
	Console.WriteLine("Hello, {0}!", name)
End Sub
$vbLabelText   $csharpLabel

この例では、{0} は指定されたオブジェクト(この場合、answername)のプレースホルダーであり、可変データを出力に含めて、指定されたフォーマット情報を印刷することができます。

C# Print Line(開発者向けの仕組み):図4 - フォーマットを示すコンソール出力

改行とユニコード文字

特殊な改行やユニコード文字には、エスケープ・シーケンスを使うことができます。 Console.WriteLineを使えば、ASCIIリテラルや有効なHTMLコードを表示することもできます。例えば、同じ文字列の中に1行の改行を含めるには、次のようにします:

public static void Main() {
    Console.WriteLine("This is line 1.\nThis is line 2.");
    Console.WriteLine("Line 1\u000Aline 2");
}
public static void Main() {
    Console.WriteLine("This is line 1.\nThis is line 2.");
    Console.WriteLine("Line 1\u000Aline 2");
}
Imports Microsoft.VisualBasic

Public Shared Sub Main()
	Console.WriteLine("This is line 1." & vbLf & "This is line 2.")
	Console.WriteLine("Line 1" & vbLf & "line 2")
End Sub
$vbLabelText   $csharpLabel

こちらでは、\n および \u000A といった指定されたUnicode文字は、どちらも改行文字を表しており、いずれの場合もテキストが次の行に移動します。

C# Print Line(開発者向けの仕組み):図5 - 改行文字を示すコンソール出力

ランダムなブール値

以下のコードは、Console.WriteLineメソッドで文字列補間を使用しています。 文字列補間は、C# 6.0から導入された機能で、文字列リテラル内に式や変数を埋め込み、指定されたブール値をコンソールアプリケーションに適切に表示するプロセスを簡素化します。

Random rnd = new Random();
for (int i = 1; i <= 5; i++)
{ 
    bool isTrue = rnd.Next(0, 2) == 1;
    Console.WriteLine($"True or False: {isTrue}");
}
Random rnd = new Random();
for (int i = 1; i <= 5; i++)
{ 
    bool isTrue = rnd.Next(0, 2) == 1;
    Console.WriteLine($"True or False: {isTrue}");
}
Dim rnd As New Random()
For i As Integer = 1 To 5
	Dim isTrue As Boolean = rnd.Next(0, 2) = 1
	Console.WriteLine($"True or False: {isTrue}")
Next i
$vbLabelText   $csharpLabel

式から返された指定データは、以下のようにコンソール・アプリケーションに表示される:

C# Print Line(開発者向けの動作方法):図6 - 文字列補間を使用したブール値のコンソール出力

異なる数値フォーマットの印刷

特に倍精度浮動小数点数や単精度浮動小数点数を扱う場合、さまざまな数値フォーマットを印刷することは、プログラミングにおいて一般的な要件である。 再び、Console.WriteLine ステートメントを使用することで、それらを正確かつ容易に印刷することができます。

倍精度浮動小数点

double doubleValue = 0.123456789;
Console.WriteLine($"Double Precision: {doubleValue:F7}");
double doubleValue = 0.123456789;
Console.WriteLine($"Double Precision: {doubleValue:F7}");
Dim doubleValue As Double = 0.123456789
Console.WriteLine($"Double Precision: {doubleValue:F7}")
$vbLabelText   $csharpLabel

この例では、F7 は小数点以下7桁で倍精度浮動小数点値をフォーマットすることを指定します。 F'の後の数字を調整することで、精度をコントロールすることができる。

既存の文字列

string existingString = "Hello, C#!";
Console.WriteLine($"Existing String: {existingString}");
string existingString = "Hello, C#!";
Console.WriteLine($"Existing String: {existingString}");
Dim existingString As String = "Hello, C#!"
Console.WriteLine($"Existing String: {existingString}")
$vbLabelText   $csharpLabel

既存の文字列を印刷するのは簡単だ。 Console.WriteLineを使用して表示したい文字列を含めるだけです。

単精度浮動小数点

float singleValue = 0.123456789f;
Console.WriteLine($"Single Precision: {singleValue:F7}");
float singleValue = 0.123456789f;
Console.WriteLine($"Single Precision: {singleValue:F7}");
Dim singleValue As Single = 0.123456789F
Console.WriteLine($"Single Precision: {singleValue:F7}")
$vbLabelText   $csharpLabel

倍精度と同様に、F7 フォーマット指定子はここで単精度浮動小数点数に使用されます。 F'の後の数字は、精度の要求に応じて調整することができる。

C#で強力な印刷機能を解き放つ;

ドキュメントの印刷は多くのアプリケーションの基本的な側面であり、C# (シーシャープ)で印刷の可能性を最大限に活用する場合、IronPrintは多用途で機能豊富なライブラリとして際立っています。

IronPrint の紹介

IronPrintは、Iron Softwareによって開発された、C#を含む.NETエコシステム向けの高度な印刷ライブラリです。 デスクトップ、モバイル、ウェブアプリケーションを問わず、IronPrintはC#(シーシャープ)プロジェクトとシームレスに統合し、多様な印刷ニーズに対応する包括的なツールを提供します。

C# Print Line(開発者向けの動作方法):図7 - IronPrintウェブページ

IronPrintの主な機能

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

IronPrintはWindows、macOS、Android、iOSなど様々なOSをサポートしている。 このクロスプラットフォーム互換性により、お客様の印刷ソリューションがさまざまな環境のユーザーに届くことが保証されます。

2. .NETバージョンサポート:

.NET Framework 4.6.2以上、.NETコア3.1+、そして最新の.NETバージョンと互換性のあるIronPrintは、幅広い.NET環境をカバーします。

3. プロジェクトタイプのサポート:

IronPrintは、モバイル(Xamarin & MAUI)、デスクトップ(WPF & MAUI)、コンソール(アプリ&ライブラリ)を含むさまざまなプロジェクトタイプに対応しています。 この柔軟性により、さまざまなアプリケーション・アーキテクチャに適している。

4. 簡単インストール:

IronPrintを使い始めるのは簡単です。 NuGet パッケージ マネージャー コンソールを使用し、Install-Package IronPrint コマンドを実行することで、このライブラリを迅速にインストールできます。

IronPrintの基本的な使い方

以下は、C#コンソールアプリケーションでIronPrintを使用してドキュメントを印刷するのがいかに簡単かを示すシンプルな例です。

using IronPrint;
class Program
{
    static void Main()
    {
    Console.WriteLine("Printing Started...");
        // Silent printing of a document
        Printer.Print("document.pdf");
        // Or display a print dialog
        Printer.ShowPrintDialog("document.pdf");
    Console.WriteLine("Printing Completed...");
    }
}
using IronPrint;
class Program
{
    static void Main()
    {
    Console.WriteLine("Printing Started...");
        // Silent printing of a document
        Printer.Print("document.pdf");
        // Or display a print dialog
        Printer.ShowPrintDialog("document.pdf");
    Console.WriteLine("Printing Completed...");
    }
}
Imports IronPrint
Friend Class Program
	Shared Sub Main()
	Console.WriteLine("Printing Started...")
		' Silent printing of a document
		Printer.Print("document.pdf")
		' Or display a print dialog
		Printer.ShowPrintDialog("document.pdf")
	Console.WriteLine("Printing Completed...")
	End Sub
End Class
$vbLabelText   $csharpLabel

ここでは、PrintメソッドとShowPrintDialogメソッドを使用して文書を印刷する様子を示しています。 物理的なプリンターがインストールされていない場合は、デフォルトのプリンターが印刷に使用されます。

C# Print Line(開発者にとっての仕組み):図8 - 印刷開始ポップアップと印刷出力の保存ポップアップ

高度な印刷機能

IronPrintは基本的な印刷作業にとどまらず、次のような高度な機能を提供します:

  • サイレント印刷: Printer.PrintAsyncを使用してダイアログを表示せずにドキュメントを印刷します。
  • カスタム印刷設定: PrintSettings クラスを使用して印刷パラメーターを微調整します。
  • 非同期印刷:メインスレッドがブロックされるのを防ぐため、印刷操作を非同期で実行する。
  • プリンターを選択: GetPrinterNames メソッドを使用すると、利用可能なプリンターから選択することで、印刷プロセスをより細かく制御できます。

プラットフォーム固有の調整

IronPrintは、様々なプラットフォームに合わせた印刷ソリューションを提供します。 たとえば、Windows、Android、iOS、macOSのような特定のプラットフォームを対象とした .NET Core プロジェクトを扱う際は、プロジェクトファイル内のTargetFrameworks プロパティを適宜調整できます。

より詳細な情報を得るには、IronPrintのドキュメントAPIリファレンスページをご覧ください。

結論

C#(シーシャープ)で行を印刷することは、コンソールアプリケーション開発の基礎となるスキルです。 テキストの表示、出力の書式設定、行終端の制御など、さまざまなテクニックを理解することで、効果的で読みやすいコンソール・プログラムを作成する能力が高まります。 Console クラスが提供する多様なメソッドを探索し、フォーマットオプションを試行し、C# の柔軟性を活用して、アプリケーションで明確で構造化されたコンソール出力を生成しましょう。

IronPrintは堅牢で柔軟な印刷機能を求めるC#開発者の強力な味方となる。 クロスプラットフォームのサポート、様々な.NETバージョンとの互換性、高度な印刷機能により、IronPrintは様々なC# (.NET)アプリケーションにおける印刷ソリューションの実装を簡素化します。 デスクトップ、モバイル、ウェブを問わず、IronPrintはC#開発の世界で印刷要件を実現するために必要なツールを提供します。

IronPrint は商業利用向けに無料体験版を提供しています。 こちらからライブラリをダウンロードして試してみてください。

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