「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 == 5 | true |
!= | 等しくない | 5 != 3 | true |
> | より大きい | 10 > 5 | true |
< | より小さい | 3 < 10 | true |
>= | 以上(等しいか大きい) | 5 >= 5 | true |
<= | 以下(等しいか小さい) | 3 <= 5 | true |
実用例:年齢による分類
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演算子による条件の否定
実践的なコツ
- 分かりやすい変数名の使用
- 定数を使ったマジックナンバーの回避
- 複雑な条件の段階的分解
- 三項演算子の適切な使用
コメント