LoginSignup
0
0

More than 3 years have passed since last update.

三項演算子でメソッドの返り値を用いた場合、実行されるのは片方だけなの?

Posted at

三項演算子でメソッドの返り値を用いた場合、実行されるのは片方だけなの?

この記事で述べていること

  • この記事は備忘録です。見る人によっては当たり前のことしか書いてません
  • 三項演算子で返り値の方のそれぞれにメソッドを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読んだら最初に書いてありましたね…(参考サイトを参照)

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0