Switch文とif文の比較
Unity Mac VScode 利用でのテスト
以下テストコード丸ごと
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class _Switch : MonoBehaviour {
public int State=0;
public enum MyState{Wait,Run,Sleep};
private MyState e_MyState;
// Use this for initialization
void Start () {
//本来はUpdateに書いた方が良さそうな内容だが、プリントがやたら出るのでStartにてテスト
//------------------------------
//スイッチ文のサンプル
//条件には、string型,float型などは使えない。
//intとenumが使える。
//int を直接数値で使う場合は状態のイメージがわかないので、
//書いてみると、レベルやhpなど数値で分かるものを利用すべきだと思った。
switch (State)
{
case 1:
print (State);
//breakは無いと VSCode上でエラーが出る。役目はスイッチ文からの脱出
//原語や環境によっては、break必須ではなさそう。
break;
//breakの下に命令を書いても意味がないし、これもVSCode上でエラーが出る。
case 2:
print (State);
break;
case 3:
print (State);
break;
//default は書かなくても動く elseと同じ役割
default:
print (State);
break;
}
//------------------------------
//上のスイッチ文と同じ結果になるif文
if(State==0){print (State);}
else if(State==1){print (State);}
else if(State==3){print (State);}
else{print (State);}
//必ずしもif文が長くなる訳では無いことが・・・・分かるなぁ・・・
//特に複雑な条件で分岐させるには if文が強そう。
//------------------------------
//なるほど enum と相性が良さそう!
//状態を分けるのはif文を利用して、その後の処理はSwitch文を利用するのが良さそう。
switch (e_MyState)
{
case MyState.Wait:
print (e_MyState);
break;
case MyState.Run:
print (e_MyState);
break;
case MyState.Sleep:
print (e_MyState);
break;
default:
print (e_MyState);
break;
}
}
}