C#のパターンマッチング
このレッスンでは、パターンを使ったswitch式で、データの型と値をすっきり安全に調べます。
はじめに
パターンマッチング(pattern matching)を使うと、値がどの型か、どんな条件を満たすかを調べ、同時にデータを取り出してすぐに使う、ということを1つの式で行えます。型を調べてから手作業で型変換する、長くて間違えやすいやり方の代わりになります。
関数Describeのswitch式は、パターンを順に調べます。データがない場合のnull、正の整数のint number when number > 0、空でない文字列のstring { Length: > 0 }、それ以外すべての_です。値12では正の整数のパターンに一致し、結果はpositive 12になります。
動きで理解する
スライダーで曜日を変えてみましょう。プログラムは一致するcaseへ直接進み、どれにも一致しなければdefaultへ進みます。
実行できる C# の例
C#
Program.cs
using System;
class Program
{
static string Describe(object? value) => value switch
{
null => "missing",
int number when number > 0 => $"positive {number}",
string { Length: > 0 } text => $"text: {text}",
_ => "other"
};
static void Main() => Console.WriteLine(Describe(12));
}
positive 12デバッガーで練習する
大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
- Triangle Classification Classify three side lengths as invalid, equilateral, isosceles, or scalene. 簡単
- 奇数、偶数、またはどちらでもない 整数が奇数か偶数か、またはどちらでもないかを分類してください。 簡単