三項演算子でメソッドの返り値を用いた場合、実行されるのは片方だけなの?
この記事で述べていること
- この記事は備忘録です。見る人によっては当たり前のことしか書いてません
- 三項演算子で返り値の方のそれぞれにメソッドを2つ置いた際、実際にどちらが返り値とされるかはともかくとして、実行されるのって片方だけなの?
- 片方だけでした
- リファレンスに書いてあったね、読もう
説明
皆さんご存知、三項演算子ってありますよね。
?の手前に置いた条件で、どちらの値が返されるか決まるあれです。
で、開発の最中に使おうとした際、ある疑問が走りました。
三項演算子とメソッドの実行
var hoge = true ? test1() : test2();
「こんなとき、test1の返り値がhogeに入るのはまあ良いとして、test2って実行されないの?それとも一応実行されはするの?」
やってみた
実際にテストしてみました。
テストしたのがUnityなのでStart等を使っていますが、ただのC#でも同じはずです。
どのメソッドが呼び出されるかどうかのテスト
private void Start(){
var hoge = true ? test1() : test2();
}
private int test1(){
Debug.Log("Test1");
return 0;
}
private int test2(){
Debug.Log("Test2");
return 1;
}
実行してみたところ、Test1
と出力されました。
どうやら選択された方のメソッドのみが評価・実行されるようです。
最後に
Microsoft Docs読んだら最初に書いてありましたね…(参考サイトを参照)