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

C# Case Statement (開発者向けの仕組み)

C#のswitch文は、複数のif-elseブロックに代わる、より簡潔で読みやすい代替手段を提供します。 変数がいくつかの異なる値のいずれかを取ることができ、それに基づいて異なるコードを実行する必要がある場合に役立ちます。 switch文は式を評価し、一致する値に基づいてコードを実行するので、コード内での意思決定の重要な部分となります。

if-else構造は単純な条件やチェックに便利ですが、switch case文は単一の変数やパターンマッチ式に基づくより複雑な条件チェックを扱う場合に優れています。 if文と比較して、よりクリーンで理解しやすい構文を提供し、コードの作成と保守において重要です。

スイッチ文の基本

スイッチ文とは?

C#のスイッチ文は、実行する多くのコードパスの中から1つを選択するための制御構造です。 選択は値または式に基づいて行われます。 特に変数がいくつかの異なる値を持つ場合には、複数のif-else条件を使用することの効率的な代替手段です。

構文

スイッチ文の基本構文は簡潔です。

// Switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case
        break;
}
// Switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case
        break;
}
' Switch statement
Select Case variable
	Case value1
		' Code to execute if variable equals value1
	Case value2
		' Code to execute if variable equals value2
	' More cases as needed
	Case Else
		' Code to execute if variable doesn't match any case
End Select
$vbLabelText   $csharpLabel
  • switch (variable): 評価する変数または式を指定します。
  • case value1: 変数と照合する異なる値や条件です。
  • break: 一致するケースが実行された後にスイッチブロックを終了するために使用されるキーワードです。
  • default: 指定されたすべてのケースが変数と一致しない場合に実行されるブロックです。

break文の理解

スイッチにおけるbreak文は重要です。 一度一致する条件が満たされても、実行が次のケースに移る「フォールスルー」動作を防ぎます。 各ケースブロックは通常、break文で終了し、一致するケースの下でのみコードが実行されるようにします。

スイッチ文とif-else文の比較

if-else文の構造は条件をチェックし、条件が真である場合にコードブロックを実行することに関わりますが、スイッチ文は単一の変数または式を複数の潜在的な値と比較します。 これにより、多くの条件やケースパターンをチェックする際に、スイッチ文はより簡潔で読みやすくなります。

例: スイッチ文の使用

int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number"); // Print to console
        break;
}
int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number"); // Print to console
        break;
}
Dim number As Integer = 3
Select Case number
	Case 1
		Console.WriteLine("One")
	Case 2
		Console.WriteLine("Two")
	Case 3
		Console.WriteLine("Three")
	Case Else
		Console.WriteLine("Other Number") ' Print to console
End Select
$vbLabelText   $csharpLabel

この例では、プログラムはケース3に一致するため、出力として「Three」を表示します。

デフォルトケースの役割

スイッチブロックにおけるデフォルトの理解

スイッチ文において、デフォルトケースは重要な役割を果たします。 指定されたケースラベルがスイッチ式の値と一致しない場合に実行されるキャッチオールオプションとして機能します。 任意ですが、予期せぬ値や未知の値を処理するためにデフォルトケースを含めることは良いプラクティスです。

デフォルト文の使用方法と利用時期

特定のケースが一致しない場合にコードブロックを実行したいときにデフォルトケースが使用されます。 スイッチ文が常に定義された振る舞いを持つようにします。 デフォルトケースはdefaultキーワードとコロンで宣言されます。

default:
    // Code to execute if no case matches
    break;
default:
    // Code to execute if no case matches
    break;
Case Else
	' Code to execute if no case matches
	break
$vbLabelText   $csharpLabel

可読性のため、通常スイッチブロックの最後に配置されますが、どこにでも置くことができます。

例: デフォルトケースを持つスイッチ文

週の一日を評価するシナリオを考えてみましょう。

int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
Dim day As Integer = 5
Dim dayName As String
Select Case day
	Case 1
		dayName = "Monday"
	Case 2
		dayName = "Tuesday"
	Case 3
		dayName = "Wednesday"
	Case 4
		dayName = "Thursday"
	Case 5
		dayName = "Friday"
	Case 6
		dayName = "Saturday"
	Case 7
		dayName = "Sunday"
	Case Else
		dayName = "Invalid day"
End Select
Console.WriteLine(dayName)
$vbLabelText   $csharpLabel

この例では、dayが1から7以外の値を持つ場合、デフォルトケースが実行され、dayNameが「Invalid day」に設定されます。

デフォルトケースのベストプラクティス

  • 常にデフォルトを含める: すべての可能なケースをカバーしたと思っていても、予期せぬ値を処理するためにデフォルトケースを含めます。
  • 意味のある行動: エラーのログ、デフォルト値の設定、ユーザーへの未知の値の通知など、意味のある行動を行うためにデフォルトケースを使用します。

高度なスイッチ機能

C#におけるスイッチ式の導入

C#の進化により、スイッチ式が導入されました。これは複数の条件分岐を扱うためのより簡潔で表現的な方法です。 従来のスイッチ文とは異なり、スイッチ式は値を返し、より簡潔で、現代のC#プログラミングにおいて強力なツールとなっています。

構文 of Switch Expressions

C#におけるスイッチ式の構文はスイッチケース文のよりコンパクトな形です。 基本的な構造は次の通りです。

var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'var result = variable switch
'{
'	value1 => result1,
'	value2 => result2,
'	_ => defaultResult
'};
$vbLabelText   $csharpLabel

アンダースコア(_)シンボルはスイッチ式でのデフォルトケースを表し、従来のスイッチ文におけるデフォルトブロックと同様に機能します。

例: スイッチ式の使用

温度の読み取り値を分類する必要があるシナリオを考えてみましょう。

int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
Dim temperature As Integer = 25
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'string weatherDescription = temperature switch
'{
'	<= 0 => "Freezing",
'	< 20 => "Cold",
'	< 30 => "Mild",
'	_ => "Hot"
'};
Console.WriteLine(weatherDescription)
$vbLabelText   $csharpLabel

この例では、スイッチ式が簡潔に温度を分類し、他のケースで一致しないシナリオをデフォルトケース(_)でカバーします。

スイッチ式によるパターンマッチング

C#のスイッチ式はパターンマッチングを可能にし、さらに多様性を持たせます。型、値、さらにはパターンをマッチさせることができます。

object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'object obj = string description = obj switch
'{
'	int i => $"Integer: {i}",
'	string s => $"String: {s}",
'	_ => "Unknown type"
'};
$vbLabelText   $csharpLabel

C#スイッチ文とスイッチ式の比較

  • C#スイッチ文: 伝統的に変数の値に基づいて異なるコードブロックを実行するために使用されます。 各ケースにはbreak文が必要です。
  • スイッチ式: C# 8.0で導入されたもので、より簡潔な構文を提供し、条件に基づいて値を返す必要がある場合に一般的に使用されます。

C#におけるIronPDFとのスイッチ文の統合

C# ケース ステートメント (開発者向けの動作方法):図1 - IronPDF

IronPDFの機能を探索するは、PDF文書の作成、編集、操作向けの.NET PDFライブラリです。 C#のスイッチ文や式と組み合わせることで、特定の条件に基づいたさまざまなPDF関連の操作を処理するための強力なツールになります。 この統合は、PDFコンテンツやメタデータに基づく意思決定が必要なタスクに特に有用です。

IronPDFの主要な機能は、レイアウトとスタイルを保持しながらHTMLをPDFに変換することです。 これは、Webコンテンツからレポート、請求書、ドキュメントのPDFを作成するのに理想的です。 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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

例: IronPDFとスイッチ文を用いた条件付きウォーターマーキング

PDFドキュメントがあり、ページ数に基づいて異なるウォーターマークを適用したい場合のシナリオを考えてみましょう。 C#スイッチ文を使ったIronPDFとの組み合わせでこれを達成する方法は以下の通りです。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Your-License-Code";
        PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
        // Define different watermark HTML for each case
        string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
        string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
        switch (pdf.PageCount)
        {
            case 1:
                // Apply watermark for one-page document
                pdf.ApplyWatermark(watermarkHtmlOnePage);
                break;
            case 2:
                // Apply watermark for two-page documents
                pdf.ApplyWatermark(watermarkHtmlTwoPage);
                break;
            default:
                // Apply a default watermark for other cases
                pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
                break;
        }
        // Save the watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Your-License-Code";
        PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
        // Define different watermark HTML for each case
        string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
        string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
        switch (pdf.PageCount)
        {
            case 1:
                // Apply watermark for one-page document
                pdf.ApplyWatermark(watermarkHtmlOnePage);
                break;
            case 2:
                // Apply watermark for two-page documents
                pdf.ApplyWatermark(watermarkHtmlTwoPage);
                break;
            default:
                // Apply a default watermark for other cases
                pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
                break;
        }
        // Save the watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		IronPdf.License.LicenseKey = "Your-License-Code"
		Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
		' Define different watermark HTML for each case
		Dim watermarkHtmlOnePage As String = "<div style='color:red;'>One Page Document</div>"
		Dim watermarkHtmlTwoPage As String = "<div style='color:blue;'>Two Page Document</div>"
		Select Case pdf.PageCount
			Case 1
				' Apply watermark for one-page document
				pdf.ApplyWatermark(watermarkHtmlOnePage)
			Case 2
				' Apply watermark for two-page documents
				pdf.ApplyWatermark(watermarkHtmlTwoPage)
			Case Else
				' Apply a default watermark for other cases
				pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>")
		End Select
		' Save the watermarked PDF
		pdf.SaveAs("watermarked.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

これは1ページの出力PDFファイルです。

C# ケース ステートメント (開発者向けの動作方法):図2 - 出力

結論

このチュートリアルでは、プログラミングにおける意思決定の基本形式であるC#のスイッチケース文を探りました。 その基本構造を理解することから始め、伝統的なif-else文と比較し、可読性と複数の条件を処理する際のシンプルさに対する利点を強調しました。

簡単なスイッチケースを作成し、デフォルトケースで様々なシナリオを処理し、スイッチ式のような高度な機能を探求しました。 スイッチ文の実際の応用は、動的なPDF処理のためのIronPDFとの統合によって実証され、スイッチ文がプログラマのツールキットで貴重なツールであることを示しました。

IronPDFは機能探索のための無料トライアルを提供しており、その機能と機能性を探索することができます。 継続利用およびその完全なツールセ ッ トへのアクセスには、IronPDFライセンスは競争力のある価格モデルから始まり、C#でのすべてのPDF処理ニーズに包括的なソリューションを提供します。

よくある質問

C# で PDF 処理を管理するために switch 文をどのように使用できますか?

ページ数や文書の種類などの条件に基づいて異なる PDF 操作を実行するために、IronPDF のようなライブラリを使用して、switch 文を使って PDF 処理を管理できます。

C# における switch 文と switch 式の違いは何ですか?

switch 文は、フォールスルーを防ぐための break 文を指定して、複数の条件を処理するための構造化された方法を提供しますが、switch 式はより簡潔で、値を返し、break 文が不要です。

C# switch 文でデフォルトケースが重要なのはなぜですか?

デフォルトケースは、予期しない値も適切に処理するために重要であり、式に一致するケースがない場合にフォールバック動作を提供することでエラーを防ぎます。

C# における switch 式はどのようにしてコードの読みやすさを向上させますか?

switch 式は条件分岐のための簡潔な構文を提供し、開発者がよりコンパクトな形式で論理を表現できるようにすることで、コードの理解や保守が容易になります。

C# アプリケーションでのエラー処理に switch 文を使用できますか?

はい、switch 文を使用して、エラーコードや条件に基づいてプログラムを特定のエラー処理ルーチンに導くことで、C# アプリケーションの堅牢性を向上させます。

IronPDF を使った switch 文の実用例は何ですか?

実用例として、ページ数やその他の基準に基づいて、PDF 文書に異なる透かしを適用するために switch 文を使用し、PDF 操作タスクのために IronPDF を活用することが挙げられます。

IronPDF はどのようにして switch ベースの PDF 操作を促進しますか?

IronPDF は、変換、編集、レンダリングといったタスクのために、switch 文を使用して条件付きでトリガー可能な強力なツールとメソッドを提供することで switch ベースの PDF 操作を促進します。

PDF 処理における switch 文の一般的な使用例は何ですか?

一般的な使用例には、文書メタデータに基づく異なる処理ルールの適用、文書の種類や内容に基づく特定の書式設定や変換の適用が含まれます。

IronPDF は switch 文を使用した読みやすく保守しやすいコードの作成にどのように役立ちますか?

IronPDF は、switch 文を使用して整理可能な包括的な PDF 操作メソッドを提供することで、構造化されたロジックによる読みやすく保守しやすいコードを実現します。

意思決定において、switch 文は if-else ブロックよりもどのような利点がありますか?

switch 文は、複数の個別の条件を処理するためのより整理された構造を提供し、長い if-else チェーンと比較してコードの明瞭性を高め、エラーの可能性を減らします。

Curtis Chau
テクニカルライター

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

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