はじめに
今回はC#7より追加された型によるswitch
と C#8より追加された複数の値をまとめのswitch
について取り上げたいと思います。
概要
型スイッチ
C#7より型によるswitch
ができるようになりました。
static void Main(string[] args) { // int 1 TypeSwitch(1); // float 10 >= 0 TypeSwitch(10.0f); // float -5 < 0 TypeSwitch(-5.0f); } private static void TypeSwitch(object obj) { switch (obj) { // objがint型のとき case int n: Console.WriteLine($"int {n}"); break; // objがfloat型 かつ 0以上のとき case float n when n >= 0: Console.WriteLine($"float {n} >= 0"); break; // objがfloat型 かつ 0未満のとき case float n when n < 0: Console.WriteLine($"float {n} < 0"); break; default: Console.WriteLine("default"); break; } }
複数の値をまとめてswitchする
C#8.0より複数の値をまとめてswitch
できるようになりました。
static void Main(string[] args) { // true, true MultiSwitch(10, 10); // true, false MultiSwitch(10, -10); // false, false MultiSwitch(-10, -10); } private static void MultiSwitch(int x, int y) { switch (x >= 0, y >= 0) { case (true, true): Console.WriteLine("true, true"); break; case (true, false): Console.WriteLine("true, false"); break; case (false, true): Console.WriteLine("false, true"); break; case (false, false): Console.WriteLine("false, false"); break; } }