【初心者向け】C#のif文の使い方と実用例まとめ

C#

「C#でプログラムを書きたいけど、if文の使い方がよくわからない」
「条件分岐の書き方で迷ってしまう」「エラーが出てうまく動かない」

プログラミングを始めたばかりの方にとって、if文は最初に覚える重要な機能の一つです。

if文を使うことで、プログラムに「判断力」を持たせることができます。

この記事では、C#のif文について、基本的な書き方から実践的な活用方法まで、具体的なコード例を交えながらわかりやすく解説します。

スポンサーリンク

if文とは

プログラムに判断力を与える仕組み

if文は、プログラムに「もし〜だったら、この処理をしよう」という判断力を与える命令文です。

英語の「if(もし)」から来ています。

日常生活での条件判断

私たちは普段から条件判断をしています:

日常生活の例

  • もし雨が降っていたら → 傘を持つ
  • もしお金が足りなかったら → 買い物をやめる
  • もしテストが80点以上だったら → 遊びに行く

プログラムでの例

  • もしパスワードが正しかったら → ログイン成功
  • もし在庫がなかったら → 「売り切れ」を表示
  • もし年齢が18歳以上だったら → 成人向けコンテンツを表示

if文の役割

プログラムの流れを制御

  • 条件によって異なる処理を実行
  • 不要な処理をスキップ
  • エラーを防ぐためのチェック

ユーザーに応じた動作

  • 入力内容に応じた結果表示
  • 権限に応じた機能制限
  • 設定に応じた画面表示

if文の基本構文

最もシンプルなif文

C#のif文は以下のように記述します:

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

構文の構成要素

1. if キーワード

  • 条件判断の開始を示す
  • 必ず小文字で書く

2. 丸括弧 ( )

  • 条件式を囲む
  • 括弧の中に判断基準を書く

3. 条件式

  • true(正しい)またはfalse(間違い)になる式
  • 比較や計算の結果

4. 波括弧 { }

  • 実行する処理の範囲を示す
  • 複数行の処理をまとめる

基本的な使用例

例1:年齢をチェックする

using System;
class Program
{
    static void Main()
    {
        int age = 20;
        if (age >= 18)
        {
            Console.WriteLine("成人です");
        }
        Console.WriteLine("プログラム終了");
    }
}

実行結果

成人です
プログラム終了

例2:パスワードをチェックする

using System;
class Program
{
    static void Main()
    {
        string password = "abc123";
        if (password == "abc123")
        {
            Console.WriteLine("ログイン成功!");
        }
    }
}

実行結果

ログイン成功!

例3:点数をチェックする

using System;
class Program
{
    static void Main()
    {
        int score = 85;
        if (score >= 60)
        {
            Console.WriteLine("合格です");
        }
    }
}

実行結果

合格です

条件がfalseの場合

using System;
class Program
{
    static void Main()
    {
        int temperature = 20;
        if (temperature > 25)  // 20 > 25 → false
        {
            Console.WriteLine("暑いです");  // この行は実行されない
        }
        Console.WriteLine("天気を確認しました");
    }
}

実行結果

天気を確認しました

else文とelse if文

else文の基本

else文は「そうでなければ」という意味で、if文の条件がfalseのときに実行される処理を記述します。

基本構文

if (条件式)
{
    // 条件がtrueの場合の処理
}
else
{
    // 条件がfalseの場合の処理
}

具体例:テストの合否判定

using System;
class Program
{
    static void Main()
    {
        int score = 45;
        if (score >= 60)
        {
            Console.WriteLine("合格です。おめでとう!");
        }
        else
        {
            Console.WriteLine("不合格です。もう一度頑張りましょう。");
        }
    }
}

実行結果

不合格です。もう一度頑張りましょう。

else if文で複数条件を処理

else if文を使うと、複数の条件を順番にチェックできます。

基本構文

if (条件1)
{
    // 条件1がtrueの場合の処理
}
else if (条件2)
{
    // 条件1がfalse、条件2がtrueの場合の処理
}
else if (条件3)
{
    // 条件1、2がfalse、条件3がtrueの場合の処理
}
else
{
    // すべての条件がfalseの場合の処理
}

具体例:成績評価システム

using System;
class Program
{
    static void Main()
    {
        int score = 75;
        if (score >= 90)
        {
            Console.WriteLine("優秀です!素晴らしい成績ですね。");
        }
        else if (score >= 80)
        {
            Console.WriteLine("良好です。よく頑張りました。");
        }
        else if (score >= 60)
        {
            Console.WriteLine("合格です。");
        }
        else
        {
            Console.WriteLine("不合格です。次回頑張りましょう。");
        }
    }
}

実行結果

良好です。よく頑張りました。

より実用的な例:会員ランク判定

using System;
class Program
{
    static void Main()
    {
        int purchaseAmount = 15000;
        bool isMember = true;
        
        if (!isMember)
        {
            Console.WriteLine("会員登録すると割引が受けられます。");
        }
        else if (purchaseAmount >= 30000)
        {
            Console.WriteLine("プラチナ会員特典:30%割引");
        }
        else if (purchaseAmount >= 10000)
        {
            Console.WriteLine("ゴールド会員特典:20%割引");
        }
        else if (purchaseAmount >= 5000)
        {
            Console.WriteLine("シルバー会員特典:10%割引");
        }
        else
        {
            Console.WriteLine("ブロンズ会員特典:5%割引");
        }
    }
}

実行結果

ゴールド会員特典:20%割引

else if文の重要なポイント

上から順番にチェック

  • 最初にtrueになった条件の処理だけが実行される
  • それ以降の条件はチェックされない

条件の順序が重要

// ✅ 正しい順序(大きい値から小さい値へ)
if (score >= 90)      // 90点以上
else if (score >= 80) // 80点以上90点未満
else if (score >= 60) // 60点以上80点未満

// ❌ 間違った順序(すべて最初の条件で処理される)
if (score >= 60)      // 60点以上(90点でもここで処理される)
else if (score >= 80) // 永遠に実行されない
else if (score >= 90) // 永遠に実行されない

ネストされたif文

ネスト(入れ子)とは

ネストとは、if文の中にさらにif文を記述することです。「もし〜だったら、さらにもし〜だったら」という、より細かい条件分岐ができます。

基本構文

if (外側の条件)
{
    if (内側の条件)
    {
        // 両方の条件がtrueの場合の処理
    }
    else
    {
        // 外側がtrue、内側がfalseの場合の処理
    }
}
else
{
    // 外側の条件がfalseの場合の処理
}

実用例1:会員割引システム

using System;
class Program
{
    static void Main()
    {
        bool isMember = true;
        int purchaseAmount = 1500;
        
        if (isMember)
        {
            Console.WriteLine("会員の方ですね。");
            
            if (purchaseAmount >= 1000)
            {
                Console.WriteLine("1000円以上のお買い上げで10%割引が適用されます!");
                int discountedPrice = (int)(purchaseAmount * 0.9);
                Console.WriteLine($"割引後の金額:{discountedPrice}円");
            }
            else
            {
                Console.WriteLine($"お支払い金額:{purchaseAmount}円(割引対象外)");
            }
        }
        else
        {
            Console.WriteLine("会員登録すると割引が受けられます。");
            Console.WriteLine($"お支払い金額:{purchaseAmount}円");
        }
    }
}

実行結果

会員の方ですね。
1000円以上のお買い上げで10%割引が適用されます!
割引後の金額:1350円

実用例2:ユーザー認証システム

using System;
class Program
{
    static void Main()
    {
        string username = "admin";
        string password = "password123";
        bool isAccountActive = true;
        
        if (username == "admin")
        {
            Console.WriteLine("管理者アカウントでのログイン試行");
            
            if (password == "password123")
            {
                Console.WriteLine("パスワードが正しいです");
                
                if (isAccountActive)
                {
                    Console.WriteLine("ログイン成功!管理者ページにリダイレクトします");
                }
                else
                {
                    Console.WriteLine("アカウントが無効になっています。管理者に問い合わせてください");
                }
            }
            else
            {
                Console.WriteLine("パスワードが間違っています");
            }
        }
        else
        {
            Console.WriteLine("一般ユーザーとしてログイン処理を継続");
        }
    }
}

実行結果

管理者アカウントでのログイン試行
パスワードが正しいです
ログイン成功!管理者ページにリダイレクトします

条件式の書き方と演算子

比較演算子

比較演算子は、2つの値を比べてtrue(正しい)またはfalse(間違い)を返します。

演算子意味結果
==等しい5 == 5true
!=等しくない5 != 3true
>より大きい10 > 5true
<より小さい3 < 10true
>=以上(等しいか大きい)5 >= 5true
<=以下(等しいか小さい)3 <= 5true

実用例:年齢による分類

using System;
class Program
{
    static void Main()
    {
        int age = 25;
        
        if (age < 13)
        {
            Console.WriteLine("子供");
        }
        else if (age < 20)
        {
            Console.WriteLine("10代");
        }
        else if (age < 30)
        {
            Console.WriteLine("20代");
        }
        else
        {
            Console.WriteLine("30代以上");
        }
    }
}

実行結果

20代

論理演算子

論理演算子を使うと、複数の条件を組み合わせることができます。

演算子意味使い方真になる条件
&&AND(かつ)条件1 && 条件2両方がtrue
||OR(または)条件1 || 条件2どちらかがtrue
!NOT(否定)!条件条件がfalse

AND演算子(&&)の使用例

両方の条件が満たされる場合

using System;
class Program
{
    static void Main()
    {
        int age = 25;
        int income = 3000000; // 年収300万円
        
        if (age >= 20 && income >= 2000000)
        {
            Console.WriteLine("ローンの審査に通りました");
        }
        else
        {
            Console.WriteLine("ローンの条件を満たしていません");
        }
    }
}

実行結果

ローンの審査に通りました

営業時間の判定

using System;
class Program
{
    static void Main()
    {
        int currentHour = 14; // 午後2時
        
        if (currentHour >= 9 && currentHour <= 18)
        {
            Console.WriteLine("営業時間内です");
        }
        else
        {
            Console.WriteLine("営業時間外です");
        }
    }
}

実行結果

営業時間内です

OR演算子(||)の使用例

どちらかの条件が満たされる場合

using System;
class Program
{
    static void Main()
    {
        string dayOfWeek = "土曜日";
        
        if (dayOfWeek == "土曜日" || dayOfWeek == "日曜日")
        {
            Console.WriteLine("週末です。お疲れ様でした!");
        }
        else
        {
            Console.WriteLine("平日です。頑張りましょう!");
        }
    }
}

実行結果

週末です。お疲れ様でした!

支払い方法の確認

using System;
class Program
{
    static void Main()
    {
        bool hasCash = false;
        bool hasCreditCard = true;
        bool hasElectronicMoney = false;
        
        if (hasCash || hasCreditCard || hasElectronicMoney)
        {
            Console.WriteLine("お支払い可能です");
        }
        else
        {
            Console.WriteLine("お支払い方法がありません");
        }
    }
}

実行結果

お支払い可能です

NOT演算子(!)の使用例

条件を否定する場合

using System;
class Program
{
    static void Main()
    {
        bool isLoggedIn = false;
        
        if (!isLoggedIn)
        {
            Console.WriteLine("ログインしてください");
        }
        else
        {
            Console.WriteLine("ようこそ!");
        }
    }
}

実行結果

ログインしてください

複雑な条件式の例

学割の適用条件

using System;
class Program
{
    static void Main()
    {
        int age = 19;
        bool isStudent = true;
        bool hasStudentCard = true;
        
        if ((age >= 18 && age <= 25) && isStudent && hasStudentCard)
        {
            Console.WriteLine("学生割引が適用されます");
        }
        else
        {
            Console.WriteLine("学生割引の条件を満たしていません");
        }
    }
}

実行結果

学生割引が適用されます

よくある間違いと注意点

間違い1:代入演算子(=)と等価演算子(==)の混同

❌ 間違った例

int score = 80;
if (score = 100)  // 間違い:代入になってしまう
{
    Console.WriteLine("満点です");
}

✅ 正しい例

int score = 80;
if (score == 100)  // 正しい:比較になる
{
    Console.WriteLine("満点です");
}

間違い2:文字列の比較でのケース

文字列比較の注意

using System;
class Program
{
    static void Main()
    {
        string userInput = "YES";
        
        // 大文字小文字を区別する比較
        if (userInput == "yes")
        {
            Console.WriteLine("はい"); // 実行されない
        }
        
        // 大文字小文字を無視した比較
        if (userInput.ToLower() == "yes")
        {
            Console.WriteLine("はい"); // 実行される
        }
    }
}

間違い3:null値のチェック不足

❌ 問題のあるコード

string userName = null;
if (userName == "admin")  // NullReferenceExceptionの可能性
{
    Console.WriteLine("管理者です");
}

✅ 改善したコード

string userName = null;
if (userName != null && userName == "admin")  // nullチェックを先に
{
    Console.WriteLine("管理者です");
}

より良いコードを書くためのコツ

1. 分かりやすい変数名を使う

❌ 改善前

if (x > 0 && y < 100 && z)
{
    // 何をチェックしているか分からない
}

✅ 改善後

bool hasPositiveBalance = accountBalance > 0;
bool isWithinLimit = withdrawalAmount < 100000;
bool isAccountActive = user.IsActive;

if (hasPositiveBalance && isWithinLimit && isAccountActive)
{
    ProcessWithdrawal();
}

2. 定数を使用してマジックナンバーを避ける

❌ 改善前

if (user.Age >= 20 && user.Income >= 2000000)
{
    // 20と2000000の意味が分からない
}

✅ 改善後

const int ADULT_AGE = 20;
const int MINIMUM_INCOME = 2000000;

if (user.Age >= ADULT_AGE && user.Income >= MINIMUM_INCOME)
{
    // 意味が明確
}

3. 三項演算子の適切な使用

単純な条件の場合

// if文を使った場合
string message;
if (score >= 60)
{
    message = "合格";
}
else
{
    message = "不合格";
}

// 三項演算子を使った場合(より簡潔)
string message = score >= 60 ? "合格" : "不合格";

4. 複雑な条件は段階的に分解

❌ 読みにくいコード

if (user.Age >= 18 && user.HasValidId && user.CreditScore > 600 && 
    user.Income >= 3000000 && !user.HasBankruptcy)
{
    ApproveApplication();
}

✅ 読みやすいコード

bool isAdult = user.Age >= 18;
bool hasValidDocuments = user.HasValidId;
bool hasGoodCredit = user.CreditScore > 600;
bool hasStableIncome = user.Income >= 3000000;
bool hasCleanRecord = !user.HasBankruptcy;

if (isAdult && hasValidDocuments && hasGoodCredit && 
    hasStableIncome && hasCleanRecord)
{
    ApproveApplication();
}

実践的な活用例

ゲームのHPシステム

using System;
class Program
{
    static void Main()
    {
        int playerHP = 25;
        int maxHP = 100;
        
        if (playerHP <= 0)
        {
            Console.WriteLine("Game Over");
        }
        else if (playerHP <= maxHP * 0.2) // HP20%以下
        {
            Console.WriteLine("危険!HPが少なくなっています");
            Console.WriteLine($"現在のHP: {playerHP}/{maxHP}");
        }
        else if (playerHP <= maxHP * 0.5) // HP50%以下
        {
            Console.WriteLine("HPが半分以下になりました");
            Console.WriteLine($"現在のHP: {playerHP}/{maxHP}");
        }
        else
        {
            Console.WriteLine("HPは十分です");
            Console.WriteLine($"現在のHP: {playerHP}/{maxHP}");
        }
    }
}

ショッピングカート計算

using System;
class Program
{
    static void Main()
    {
        int itemCount = 3;
        double totalPrice = 2500.0;
        bool isMember = true;
        bool isFirstTime = false;
        
        double finalPrice = totalPrice;
        
        // 送料計算
        if (totalPrice >= 5000)
        {
            Console.WriteLine("送料無料");
        }
        else
        {
            finalPrice += 500; // 送料追加
            Console.WriteLine("送料: 500円");
        }
        
        // 割引計算
        if (isMember && totalPrice >= 2000)
        {
            finalPrice *= 0.9; // 10%割引
            Console.WriteLine("会員割引: 10%");
        }
        else if (isFirstTime)
        {
            finalPrice *= 0.95; // 5%割引
            Console.WriteLine("初回割引: 5%");
        }
        
        Console.WriteLine($"商品合計: {totalPrice}円");
        Console.WriteLine($"最終金額: {finalPrice}円");
    }
}

実行結果

送料: 500円
会員割引: 10%
商品合計: 2500円
最終金額: 2700円

まとめ

C#のif文は、プログラムに判断力を与える重要な機能です。

基本構文の理解

  • if文の基本的な書き方とルール
  • 条件式とtrueまたはfalseの概念
  • 波括弧を使った処理範囲の指定

条件分岐の拡張

  • else文による「そうでなければ」の処理
  • else if文による複数条件の処理
  • ネスト構造による複雑な条件分岐

演算子の活用

  • 比較演算子による値の比較
  • 論理演算子による条件の組み合わせ
  • NOT演算子による条件の否定

実践的なコツ

  • 分かりやすい変数名の使用
  • 定数を使ったマジックナンバーの回避
  • 複雑な条件の段階的分解
  • 三項演算子の適切な使用

コメント

タイトルとURLをコピーしました