Unity 2021LTS版がリリースされました。多くの新機能があるのですが、今回はUnityが、C#8.0に対応したことで可能となった、新しいswitchの書き方についてです。
なお、文とは"statement"を指しますが、この新しい構文は厳密にはstatement(文)ではなく"式"となります。
マイクロソフト公式が、C#8.0の新機能について解説しており、今回の記事はここを参照しています。
switch文と言えば...
switch(input){
case Animal.Dog :
Console.WriteLine("Inu");
break;
case Animal.Cat :
Console.WriteLine("Neko");
break;
default:
Console.WriteLine("Doubutsu");
break;
}
という風に、現在となっては少し古びた、コード全体が縦長になってしまうような構文でした。しかし、C#8.0からは、もっとスッキリとした書き方が可能です。
以下の例は、C#のコンソールアプリケーションにおいて書かれたもので、Animalというenumを入力し、その日本語名をstringで返すswitch式を含むstatic関数となります。
構文としては、
public return-Type FunctionName (input-Type input) =>
input switch{
input-case => return-value,
///////////////
_ => return-value
}; ←コロンが必要
となります。swicth文の中で指定された以外の入力については、旧switch文ではdefaultとしてまとめていましたが、新switchでは_(アンダースコア)がそれに置き換わります。
=>が使われているようにラムダ式のような感じで、慣れるまでは違和感を感じるかなぁとは思いますが、旧構文と比べて明らかに分かりやすいコードになるので、こっちを使っていきたいですね。