ここではC#の三項演算子について理解しましょう。ちなみに正式名称は三項条件演算子です。
ただ、三項演算子に属する演算子がこれしか無いので、みんな三項演算子と呼びます。
三項条件演算子 (ternary conditional operator)
これはif文を便利にした演算子です。先に伝えると、無理に使わなくてもif文で書けます。
ここではC#のif文について理解しましょう。これはプログラムの基本構造で説明した選択にあたる処理です。なお、プログラムの基本構造が分からない人は先に次の記事を読んでください。if statement (ステートメント)いわゆる条件分岐でif文と呼びます。つまりは何らかの条件に従って、いずれかの処理を実行する構文です。パターン1: ifいくつかパターンがありますが、最も簡単な記述はこれです。これは条件を満たすとブロック内に処理が進み、満たさない場合はブロック...
では、実際にif文で記述されたパターンを三項演算子に変更する例を見てみましょう。
これはnの値によってxの初期値を決めるサンプルコードです。
namespace Sample
{
internal class Program
{
static void Main(string[] args)
{
int n = -1;
// if文で記述
int x;
if (n > 0)
x = 100;
else
x = -100;
Console.WriteLine(x);
}
}
}
これを三項演算子を利用して記述するとこうなります。
namespace Sample
{
internal class Program
{
static void Main(string[] args)
{
int n = -1;
// 三項演算子で記述
int x = n > 0 ? 100 : -100;
Console.WriteLine(x);
}
}
}
どうですか? とてもシンプルになりましたよね。このようにif文で複数行使うコードが1行で書けます。
構文の確認
書き換えできることが分かったので次は構文を確認しましょう。
ポイントは、if文と異なり条件式の結果に応じて:(コロン)の左右いずれかの値を返すことです。
この返すというのが重要で、結果的に変数に代入することができます。
そして返す値は:(コロン)の左右で同じ型である必要もあります。これは返される型が異なると型定義ができないからです。
気がついた人もいると思いますが、if文の場合はif ~ elseのパターンしか変換できません。
また、条件分岐後の処理が値を返す形に変更できない場合も駄目です。
注意点とかありますか?
三項演算子から三項演算子って感じに入れ子で書けるんだけど、複雑化して意味不明になるからオススメしない。
あとがき
何らかの条件で初期化する値を変更するってパターンは多いので、三項演算子は絶対に理解したほうがいいですよ。
◆ C#に関する学習コンテンツ
この記事は参考になりましたか?
コメント