エンジニアの将来って?

現在8年目エンジニアがプログラムの解説、ゲームの研究を書く雑記ブログです

【C#】三項演算子について解説します

こんにちは。たいら(@tairaengineer2)です。
この記事では、C#三項演算子について解説します。

スポンサーリンク

 

前提条件

この記事では、Visual Studio 2017 Communityを使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

三項演算子とは

三項演算子とは、ざっくり言うとif文簡略化できる演算子です。
書き方は以下になります。

【条件文】 ? 【trueだった場合返す値や処理】 : 【falseだった場合返す値や処理】

使い方の例を出します。

string result = (6 % 2 == 0) ? "割り切れる" : "割り切れない";

f:id:Tairax:20200410161138p:plain

これは、以下のif文と同じ意味です。

            string result = "";
            if (6 % 2 == 0)
            {
                result = "割り切れる";
            }
            else
            {
                result = "割り切れない";
            }

「三項演算子」と聞くと、身構えてしまうような言葉です。
しかし、要はif文を簡単に書くことができる演算子です。
条件判定をしてその結果に応じて代入する、というような簡単なものであれば三項演算子の方が良いかと思います!

便利な三項演算子ですが、注意点があります。
それを次章で書いていきます。

三項演算子を使う上での注意点

それは、三項演算子のネスト深くしないようにすることです。
例を出します。
if文で3パターンに分けて、条件分岐させるとします。

int number = 8;
string result = "";
if (number % 7 == 0)
{
    result = "7で割り切れた
}else if (number % 4 == 0)
{
    result = "4で割り切れた";
}
else
{
    result = "4も7も割り切れなかった";
}

↑のような条件分岐を三項演算子で書くと、こうなります。

int number = 8;
string result = (number % 7 == 0) ? "7で割り切れた" : (number % 4 == 0) ? "4で割り切れた" : "4も7も割り切れなかった";

f:id:Tairax:20200410165024p:plain

もうマジで分かりにくいです(;'∀')
3パターンだけでも分かりにくいのに、5パターンとかなると理解できません\(^o^)/
条件分岐が多くなるなら、if文またはswitch-caseを使った方がプログラムが格段に読みやすいです。

なので、三項演算子ではネストを深くしすぎないようにしましょう。
私は最高で3パターンまでしかやらないようにします。

では、次章で実際に使ってみます!

解説で使うプログラムの概要

以下2パターンで三項演算子で判定し、結果をコンソールに表示します。

  • 文字数を判定する(条件分岐は2パターン)
  • ある数が何の数で割り切れるかを判定(条件分岐は3パターン)

コンソールプロジェクトを作成するやり方は下の記事をご参考ください。

www.tairax.com

プログラムを作成したあと、ビルドをするやり方はこちらの記事をご参考ください。

www.tairax.com

C#サンプルプログラム

using System;

namespace ConsoleApp1
{
    /// <summary>
    /// 三項演算子サンプルプログラム
    /// </summary>
    class Program
    {
        /// <summary>
        /// メイン
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // 文字数を判定する(条件分岐は2パターン)
            string judgeStr = "三項演算子";
            string resultJudgeStr = (judgeStr.Length % 2 == 0) ? "偶数" : "奇数";
            Console.WriteLine(judgeStr + "の文字数は" + resultJudgeStr);


            // ある数が何の数で割り切れるかを判定(条件分岐は3パターン)
            int number = 9;
            string resultNumber = (number % 7 == 0) ? "7で割り切れた" 
                : (number % 4 == 0) ? "4で割り切れた" : "4も7も割り切れなかった";
            Console.WriteLine(number + "は" + resultNumber);


        }
    }
}

実行結果

f:id:Tairax:20200410205159p:plain

三項演算子の文字数は奇数
9は4も7も割り切れなかった
続行するには何かキーを押してください . . .

想定通りの判定結果になりました!

 

スポンサーリンク

 

まとめ:三項演算子は気をつけて使ってみよう!

以上が三項演算子の解説です。
まとめなので、もう1度三項演算子の使い方を載せておきます。

【条件文】 ? 【trueだった場合返す値や処理】 : 【falseだった場合返す値や処理】

三項演算子は条件が多すぎると、とても読みにくいプログラムになってしまいます。
しかし、使う場面を考えれば簡単な条件分岐ではif文よりスマートにプログラムを書くことができます。
ぜひ、三項演算子を使ってみてください!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

ほかにもC#解説記事を書いてます。
よければご参考ください。

【C#】文字列がnullまたは空かを簡単に判定できるstring.IsNullOrEmptyメソッドを解説します

【C#】はてな2つの演算子、null合体演算子について解説します

今までブログで解説したC#の解説まとめ記事はこちらをご参考ください。

【C#】ブログで書いた文法記事のまとめ