【C#】if文の使い方について詳しく解説

if文は、プログラムで条件分岐を行うために欠かせない構文です。

しかし、初めて触れる人にとっては少し難しく感じることもあるかもしれません。

そこで本記事では、if文の基本的な使い方から応用的な使い方までわかりやすく解説していきます。

目次

if文とは

if文は、プログラムの中で条件分岐を行うために使用される制御構造の一つです。

ある条件が成立した場合には、指定された処理を実行し、成立しない場合には別の処理を実行することができます。

C#では、if文は以下のような形式で記述します。

if (条件式)
{
    // 条件式が真の場合に実行する処理
}
else
{
    // 条件式が偽の場合に実行する処理
}

例えば、変数xが10未満であれば「xは10未満です」というメッセージを表示し、それ以外の場合には「xは10以上です」というメッセージを表示するプログラムを作成する場合、以下のようなコードになります。

int x = 5;

if (x < 10)
{
    Console.WriteLine("xは10未満です");
}
else
{
    Console.WriteLine("xは10以上です");
}

このプログラムでは、変数xが10未満であるため、「xは10未満です」というメッセージが表示されます。

if文の基本的な使い方

C#において、if文は条件分岐を行うための基本的な構文です。

ここでは、if文の基本的な使い方について解説します。

単純なif文

まずは、単純なif文から見ていきましょう。

以下のように、ifキーワードの後ろに条件式を書きます。

if (条件式)
{
    // 条件が真である場合に実行される処理
}

例えば、変数xが10以上である場合に「xは10以上です」と表示するプログラムを作成すると以下のようになります。

int x = 15;
if (x >= 10)
{
    Console.WriteLine("xは10以上です");
}

このプログラムでは、変数xが10以上である場合に「xは10以上です」というメッセージがコンソール上に表示されます。

if-else文

次に、if-else文を見ていきましょう。

以下のように、elseキーワードを用いて条件が偽である場合の処理を指定することができます。

if (条件式)
{
    // 条件が真である場合に実行される処理
}
else
{
    // 条件が偽である場合に実行される処理
}

例えば、変数xが10以上であれば「xは10以上です」、そうでなければ「xは10未満です」と表示するプログラムを作成すると以下のようになります。

int x = 5;
if (x >= 10)
{
    Console.WriteLine("xは10以上です");
}
else
{
    Console.WriteLine("xは10未満です");
}

このプログラムでは、変数xが10未満である場合、「xは10未満です」というメッセージがコンソール上に表示されます。

if-else if文

最後に、if-else if文を見ていきましょう。

以下のように、複数の条件式を指定することができます。

if (条件式1)
{
    // 条件1が真である場合に実行される処理
}
else if (条件式2)
{
    // 条件2が真である場合に実行される処理
}
// ...
else
{
    // どの条件も偽だった場合に実行される処理
}

例えば、変数xが0より大きければ「正の値」、0ならば0、負の値ならば「負の値」と表示するプログラムを作成すると以下のようになります。

int x = -5;
if (x > 0)
{
    Console.WriteLine("正の値");
}
else if (x == 0)
{
    Console.WriteLine("0");
}
else
{
    Console.WriteLine("負の値");
}

このプログラムでは、変数xが負の値である場合、「負の値」というメッセージがコンソール上に表示されます。

論理演算子を使ったif文の書き方

C#のif文には、論理演算子を使って条件式を組み合わせることができます。

論理演算子には、AND演算子(&&)、OR演算子(||)、NOT演算子(!)の3つがあります。

AND演算子

AND演算子は、2つの条件式が両方ともtrueの場合にtrueを返します。

例えば、以下のようなコードでは、変数xが10以上かつ20以下である場合に「xは10以上20以下です」というメッセージを表示します。

int x = 15;
if (x >= 10 && x <= 20)
{
    Console.WriteLine("xは10以上20以下です");
}

OR演算子

OR演算子は、2つの条件式のうちどちらか一方でもtrueであればtrueを返します。

例えば、以下のようなコードでは、変数xが5未満または25以上である場合に「xは5未満または25以上です」というメッセージを表示します。

int x = 30;
if (x < 5 || x >= 25)
{
    Console.WriteLine("xは5未満または25以上です");
}

NOT演算子

NOT演算子は、条件式の真偽値を反転させます。

例えば、以下のようなコードでは、変数xが0でない場合に「xは0ではありません」というメッセージを表示します。

int x = 1;
if (! (x == 0))
{
    Console.WriteLine("xは0ではありません");
}

これらの論理演算子を使って複雑な条件式を組み立てることができます。

ただし、条件式が長くなりすぎたり複雑すぎたりすると可読性が悪くなるため注意しましょう。

if文のネスト

if文のネストとは、if文の中に別のif文を入れることです。

複雑な条件分岐が必要な場合や、複数の条件を組み合わせた処理が必要な場合に使用されます。

例えば、ある商品が売り切れている場合は「売り切れ」と表示し、在庫がある場合は値段を表示するプログラムを考えてみましょう。

以下は、if文のネストを使ったサンプルコードです。

int stock = 0;
int price = 100;
//在庫チェック
if (stock == 0)
{
    //在庫がない場合
    Console.WriteLine("売り切れ");
}
else
{
    //在庫がある場合
    if (price > 50)
    {
        Console.WriteLine("値引きあり");
    }
    else
    {
        Console.WriteLine("値引きなし");
    }
}

このプログラムでは、まずstock変数が0かどうかを調べています。

もし0であれば、「売り切れ」と表示します。

在庫がある場合は、さらにprice変数が50より大きいかどうかを調べています。

もし大きければ「値引きあり」、そうでなければ「値引きなし」と表示します。

このように、if文のネストを使うことで複雑な条件分岐も簡単に表現することができます。

ただし、ネストが深くなりすぎると可読性が悪くなってしまうため注意が必要です。

if文の注意点

if文はプログラミングにおいて非常に重要な役割を担っていますが、その書き方には注意が必要です。

以下では、if文を書く際に気をつけるべき点について解説します。

if文の書き方に注意すること

if文を書く際には、条件式の中で変数や定数を使用することが一般的です。

しかし、条件式の中で変数や定数を使用する場合、その値が予期せず変更される可能性があるため、注意が必要です。

例えば、以下のようなコードを考えます。

int x = 10;
if (x == 10)
{
    Console.WriteLine("xは10です");
}

このコードでは、変数xの値が10であるかどうかを判定しています。

しかし、もし後でxの値が変更されてしまった場合、意図しない結果となってしまいます。

int x = 10;
// 何らかの処理
x = 20; // xの値を20に変更
if (x == 10)
{
    Console.WriteLine("xは10です"); // 実行されない
}

このような問題を避けるためには、条件式内で変数や定数を使用する場合は、その値が予期せず変更されることがないように注意する必要があります。

if文のネストに注意すること

複雑な処理を行う場合、if文をネストして使用することがあります。

しかし、if文をネストしすぎると可読性が低下してしまうため、適切なレベルで分岐させるよう心掛けましょう。

例えば以下のようなコードでは、

int x = 5;
if (x > 0)
{
    if (x < 10)
    {
        Console.WriteLine("xは1以上かつ10未満です");
    }
}

2段階目以降も同様にネストしていくと可読性が低下してしまいます。

この場合は以下のようにリファクタリングすることで可読性向上させることが出来ます。

int x = 5;
if (x > 0 && x < 10)
{
    Console.WriteLine("xは1以上かつ10未満です");
}

以上のように適切なレベルで分岐させることで可読性向上させましょう。

目次