if (!(i != 2 && i != 4))というif文がありました。
機能を変えずにもっと短くしてよと言われました。
できるでしょうか?
できます。
if (i == 2 || i == 4) でオッケーです。
結果に変化はありません。
ですが文字数は減りました。
一般的に【条件判断式を逆にする(!=を==にする)】【&&を||にする】という作業を行うと、逆の条件判定に書き換えられます。そうするとこの場合否定演算子を取ることができて、式を短くできます。
罠の数々 §
- 【&&を||にする】という手順は忘れないようにしよう。それを忘れると全く違う判定に化けてしまう
- もっと複雑な式だと書き換えにはいろいろと手間が掛かる
参考リンク §
ブール論理演算子 (C# リファレンス)
&&と||に置き換えるテクニックは、&を|に置き換えるために使えるだろうか。上記のリンクから確認してみよう。ビット演算を理解していれば答が出せるぞ!
リポジトリ §
https://github.com/autumn009/cshowto
SameCond §
using System;
class Program
{
static void Main()
{
for (int i = 0; i < 10; i++)
{
Console.Write(i);
if (!(i != 2 && i != 4)) Console.Write("[HIT]");
}
Console.WriteLine();
for (int i = 0; i < 10; i++)
{
Console.Write(i);
if (i == 2 || i == 4) Console.Write("[HIT]");
}
Console.WriteLine();
}
}
実行結果
012[HIT]34[HIT]56789
012[HIT]34[HIT]56789