.NET ヘルプ

C# ケース文(開発者向けの仕組み)

更新済み 1月 4, 2024
共有:

について C#のswitch文 より簡潔で読みやすい複数のif-else式ステートメントの代替案を提供します。 変数がいくつかの異なる値を取ることができ、その値に基づいて異なるコードを実行する必要がある場合に有益です。 このケースステートメントは、式を評価し、一致する値に基づいて静的 void main コードを実行するため、コード内の意思決定の不可欠な部分となります。

if-else構造は単純な条件やチェックに適している一方で、switch case文はより複雑な条件チェック、特に単一の変数やパターンマッチ式に基づく場合に優れています。 それらは、同じコードを書くことと維持することの両方において重要である if ステートメントと比較して、よりクリーンで理解しやすい構文を提供します。

スイッチステートメントの基本

スイッチステートメントとは何ですか?

C#のswitch文は、実行する多数のコードパスの中から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 or fall through behavior
        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 or fall through behavior
        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 or fall through behavior
End Select
VB   C#
  • **`スイッチ (変数)これは、上記のプログラムに示されているように評価する変数または式を指定する場所です。
  • case value1: これは、変数に対してチェックする異なる値や条件です。
  • break: このキーワードは、一致するケースが実行された後にスイッチブロックを終了するために使用されます。
  • default ステートメント: このオプションの goto ブロックは、指定されたどのケースも変数と一致しない場合に実行されます。

ブレークステートメントの理解

スイッチ内のブレークステートメントは重要です。 条件が一致しているにもかかわらず、実行が後続のケースに移行する「フォールスルー」動作を防ぎます。 各ケースブロックは、通常、一致するケースの下のコードのみが実行されるように、最後にブレーク文で終了します。

スイッチ文とIf-Else文の比較

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

例:Switch文の使用

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
VB   C#

この例では、数値がcase 3に一致するため、プログラムは出力として「Three」を印刷します。

デフォルトケースの役割

スイッチブロックのデフォルトを理解する

スイッチステートメントでは、デフォルトケースが重要な役割を果たします。 それは指定されたケースラベルがスイッチ式の値と一致しないときに実行される包括的なオプションとして機能します。 これは任意ですが、予期しないまたは不明な値を処理するためにデフォルトケースを含めるのは良い習慣です。

デフォルトステートメントの使い方と使用時期

特定のケースが該当しない場合に、コードブロックを実行するためにdefaultケースが使用されます。 それは、入力に関わらず、switchステートメントが常に明確な動作を持つことを保証します。 デフォルトケースは、コロンの後に 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
VB   C#

デフォルトケースはスイッチブロック内のどこにでも配置できますが、通常は読みやすさのために末尾に配置されます。

例: デフォルトケースを含むスイッチ文

次のようなシナリオを考えてください。あなたは週の曜日を評価しています。

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)
VB   C#

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

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

常にデフォルトを含む: 全ての可能なケースをカバーしたと思っていても、予期しない値を処理するためにデフォルトケースを含めてください。

意義のあるアクション: デフォルトケースを使用して、エラーのログ記録、デフォルト値の設定、未知の値についてユーザーに通知するなどの意義のあるアクションを実行します。

高度なスイッチ機能

C# におけるスイッチ式の紹介

C#の進化に伴い、スイッチ式は複数の条件分岐をより簡潔で表現力豊かに処理する方法として導入されました。 従来のswitch文とは異なり、switch式は値を返し、より効率的であるため、最新のC#プログラミングにおいて強力なツールとなります。

スイッチ式の構文

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
'};
VB   C#

アンダースコア (すみません、翻訳するための内容が見当たりませんでした。翻訳が必要な文章を提供してください。) symbol はスイッチ式におけるデフォルトケースを表し、従来のスイッチステートメント内のデフォルトブロックと同様に機能します。

例:スイッチ式の使用

温度測定を分類する必要があるシナリオを考えてみましょう:

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)
VB   C#

この例では、スイッチ式が温度を簡潔に分類しており、デフォルトの場合 (すみません、翻訳するための内容が見当たりませんでした。翻訳が必要な文章を提供してください。) 他のケースに該当しないあらゆるシナリオを包括する。

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

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"
'};
VB   C#

C# スイッチ文 vs. スイッチ式

C# スイッチ文:通常、変数の値に基づいて異なるコードブロックを実行するために使用されます。 各ケースにはbreakステートメントが必要です。

スイッチ式: C# 8.0で導入され、これによりより簡潔な構文が提供され、通常は条件に基づいて値を返す必要がある場合に使用されます。

C# で IronPDF を使用した Switch ステートメントの統合

C# ケースステートメント(開発者のための仕組み): 図 1 - IronPDF

IronPDF はPDFドキュメントを作成、編集、および操作するための.NET PDFライブラリです。 C#のswitchステートメントまたは式と組み合わせると、特定の条件に基づいてさまざまなPDF関連の操作を処理するための強力なツールになります。 この統合は、PDFコンテンツやメタデータに基づいた意思決定を必要とするタスクに特に有用です。

例: IronPDF と switch 文を使用した条件付き透かし

シナリオを考えてみましょう。あなたはPDFドキュメントを持っていて、次にしたいことは 異なる透かしを適用する ドキュメントのページ数に基づいて。 以下の方法で、C#のswitch文を組み合わせてIronPDFを使用することができます:

using IronPdf;
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;
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
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")
VB   C#

こちらが1ページの出力PDFファイルです:

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

結論

このチュートリアルでは、プログラミングにおける意思決定の方法であるC#のswitch case文を探求しました。 その基本構造を理解することから始め、従来のif-else文と比較し、複数の条件を処理する際の読みやすさと簡潔さの利点を強調しました。

以下の内容を日本語に翻訳してください:

私たちは単純なswitchケースを作成し、defaultケースでさまざまなシナリオを処理し、switch式のような高度な機能を探ります。 スイッチステートメントの実際の応用は、動的PDF処理のためにIronPDFを統合した例を通じて示され、スイッチステートメントがプログラマーのツールキットでどのように価値があるかを紹介しました。

IronPDFは 無料試用, その機能と機能性を探求できるようにします。 続けて利用し、全てのツールをアクセスするためには、IronPDFのライセンスは$749から始まり、C#でのPDF処理ニーズに対する包括的なソリューションを提供します。

< 以前
C# キュー(開発者向けの仕組み)
次へ >
C# Protected(開発者向けの使用方法)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >