C# if文の使い方

この記事のポイント

C#プログラミングにおけるif文は、条件に応じて処理を分岐させる重要な構文です。本記事では以下のポイントを重点的に解説します。

この記事を読むと、次のようなことが身に付きます。

  • if文の基本的な書き方と条件式の作り方がわかる
  • elseやelse ifを使った複数条件の処理方法を習得できる
  • プログラムでよく使われるコードの書き方を知る

記事を通して、if文の正しい使い方をマスターすれば、複雑な条件判定も効率的に処理できるプログラムが書けるようになります。

目次

if文とは?

C#のif文は、「もし〇〇だったら△△する」というように、条件によって処理の流れをコントロールするための構文です。

日常生活で「もしテストで80点以上取れたら、ゲームをする」と決めることがありますよね。プログラムも同じように、ある条件が満たされたときだけ特定の処理を実行させたい、といった場面でif文が活躍します。

if文の特徴

  • 条件式はboolean型の値を返す式で、比較演算子や論理演算子を使う
  • 指定した条件が正しい(true)場合だけ処理を実行する
  • 処理は波括弧{}で囲んだコードブロック内に記述する
  • 条件式の結果はtrueかfalseのどちらかになる必要がある
  • ユーザーの入力内容をチェックするなど様々な場面で使われる

if文はプログラムの流れをコントロールし、状況に応じた処理を実行させるために欠かせない機能です。

【関連】
C#をもっと詳しく学ぶならpaizaラーニング

基本構文

C#のif文の基本的な書き方から、else文、else if文を組み合わせた複数条件の処理まで、具体的なコード例とともに解説します。

if文は以下のように記述します。

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

( )の中に条件式を書き、{ }の中に実行したい処理を書きます。

条件式には比較演算子(==、!=、>、<など)や論理演算子(&&、||、!)を使用できます。単純な条件判定では1つのif文、複数の選択肢がある場合はelse ifを連続して使用し、どの条件にも当てはまらない場合の処理にはelse文を使います。各構文の実行結果も併せて確認していきましょう。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { int number = 15; if (number > 10) { Console.WriteLine("数値は10より大きいです"); } } } }

出力結果

数値は10より大きいです

この例では、変数numberの値が15なので、number > 10という条件式が正しい(true)と判断されます。そのため、「数値は10より大きいです」が出力されます。

次に、else ifとelseを使った例です。点数を評価するシナリオを考えてみましょう。scoreが90点以上なら「優秀です」、70点以上なら「良好です」、どちらでもなければ「がんばりましょう」と表示されます。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { int score = 85; if (score >= 90) { Console.WriteLine("優秀です"); } else if (score >= 70) { Console.WriteLine("良好です"); } else { Console.WriteLine("がんばりましょう"); } } } }

出力結果

良好です

この例では、まずscore >= 90がチェックされますが、scoreは90以上ではないため、falseと判断されます。次にelse ifの条件score >= 70がチェックされ、scoreは70以上なのでtrueとなり、「良好です」が出力されます。最初のif文やelse ifの条件に当てはまらなかった場合は、最後のelseブロックが実行されます。

実用例

実際のプログラミングでよく使われるif文のパターンを、動物を題材にしたサンプルコードで紹介します。各コード例では、条件判定の考え方から実装方法、出力結果まで詳しく解説しています。数値の比較、文字列の判定、複数条件の組み合わせなど、さまざまな場面で活用できる実践的な内容を取り上げました。これらの例を参考に、自分のプログラムにif文を組み込んでみてください。各サンプルコードは実行可能な形で記載しており、すぐに動作確認ができます。

数値の大小比較

動物の年齢を判定して、成長段階を表示するプログラムです。整数値の比較を行い、条件に応じて適切なメッセージを出力します。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { int lionAge = 3; if (lionAge < 2) { Console.WriteLine("ライオンの赤ちゃんです"); } else { Console.WriteLine("大人のライオンです"); } } } }

出力結果

大人のライオンです

この例では、lionAgeが3なので、lionAge < 2の条件はfalseになります。そのため、elseブロック内の処理が実行され、「大人のライオンです」と表示されます。年齢制限や特定の数値を超えるかどうかを判定する際によく使われるパターンです。

文字列の比較判定

動物の種類を文字列で比較し、それぞれに応じたメッセージを表示するプログラムです。文字列の等価比較にはEquals演算子を使用します。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { string animal = "ネコ"; if (animal == "イヌ") { Console.WriteLine("ワンワンと鳴きます"); } else if (animal == "ネコ") { Console.WriteLine("ニャーニャーと鳴きます"); } } } }

出力結果

ニャーニャーと鳴きます

この例では、animalの値は「ネコ」のため、if文animal == "イヌ"はfalseとなり、次のelse if (animal == "ネコ")の条件がチェックされます。この条件はtrueなので、「ニャーニャーと鳴きます」と表示されます。なお、複数の条件をelse ifで繋げることで、さまざまなパターンに対応できます。文字列を比較する際は、大文字と小文字が区別される点にも注意しましょう。

複数条件の組み合わせ

論理演算子を使って複数の条件を同時に判定するプログラムです。AND演算子(&&)を使用して、両方の条件が満たされた場合の処理を記述します。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { int elephantWeight = 5000; int elephantAge = 25; if (elephantWeight > 4000 && elephantAge > 20) { Console.WriteLine("大型で成熟したゾウです"); } } } }

出力結果

大型で成熟したゾウです

この例では、「体重が4000より大きい」かつ「年齢が20より大きい」という2つの条件をAND演算子(&&)でつないでいます。elephantWeightは5000、elephantAgeは25なので、両方の条件がtrueです。そのため、メッセージが出力されました。OR演算子(||)を使えば、「いずれかの条件が満たされた場合」という判定もできます。

配列の要素チェック

配列に特定の動物が含まれているかどうかをチェックするプログラムです。配列の要素を検索し、存在する場合と存在しない場合で異なる処理を行います。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { string[] animals = { "イヌ", "ネコ", "ウサギ" }; string target = "ネコ"; if (Array.IndexOf(animals, target) >= 0) { Console.WriteLine($"{target}が見つかりました"); } } } }

出力結果

ネコが見つかりました

この例では、Array.IndexOfメソッドがanimals配列からtarget("ネコ")を探しています。見つかった場合、その要素のインデックス(この場合は1)を返します。見つからない場合は-1を返します。>= 0という条件式で、インデックスが0以上、つまり要素が見つかったかどうかを判定しています。

ユーザー入力の検証

ユーザーが入力した動物名が有効かどうかを検証するプログラムです。空文字列やnull値のチェックを行い、適切な入力かどうかを判定します。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { string userInput = "パンダ"; if (!string.IsNullOrEmpty(userInput)) { Console.WriteLine($"入力された動物: {userInput}"); } else { Console.WriteLine("動物名を入力してください"); } } } }

出力結果

入力された動物: パンダ

この例では、string.IsNullOrEmptyメソッドを使用してnullまたは空文字列かを判定し、falseを返します。先頭に!(否定)があるため、条件式全体としてはtrueとなり、入力された動物名が表示されます。入力値の検証は、予期せぬエラーを防ぐために重要です。

年齢による分類判定

動物の年齢を複数の範囲に分類し、それぞれの成長段階を表示するプログラムです。複数のelse if文を使用して、詳細な分類を行います。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { int dogAge = 8; if (dogAge < 1) { Console.WriteLine("子イヌです"); } else if (dogAge <= 7) { Console.WriteLine("成犬です"); } else { Console.WriteLine("老犬です"); } } } }

出力結果

老犬です

この例では、dogAgeは8なので最初のif文dogAge < 1はfalseです。次のelse if (dogAge <= 7)もfalseです。どちらの条件にも当てはまらなかったため、最後のelseブロックが実行され、「老犬です」と表示されました。

年齢のように範囲で分類する場合、条件式の境界値(<=など)の扱いに注意が必要です。なぜなら、<(より小さい)と<=(以下)を間違えると、条件の境目になる値が、意図しないグループに分類されてしまうからです。

例えば、else if (dogAge <= 7)をelse if (dogAge < 7)と書いてしまうと、7歳の犬が「成犬」ではなく「老犬」と判定されてしまいます。

範囲を扱う条件では、境界の値そのものを含むのか含まないのかを意識して、正しい比較演算子を選ぶことがバグを防ぐ上で重要です。

成績評価システム

動物の訓練成績を点数で評価し、ランク分けを行うプログラムです。数値の範囲判定を使って、詳細な評価システムを構築します。

using System; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { int trainScore = 85; if (trainScore >= 90) { Console.WriteLine("サルの訓練成績: 優秀"); } else if (trainScore >= 70) { Console.WriteLine("サルの訓練成績: 良好"); } else { Console.WriteLine("サルの訓練成績: 要改善"); } } } }

出力結果

サルの訓練成績: 良好

この例では、trainScoreの85点にもとづいて評価しています。trainScore >= 90はfalseですが、次のtrainScore >= 70はtrueなので、「良好」と表示されます。成績評価のように明確な基準で判定する場合、if文の条件をどの順番で書くかが結果に影響するため、設計が重要です。

パスワード強度チェック

動物の名前をパスワードとして使用する際の強度をチェックするプログラムです。文字数だけでなく「大文字・小文字・数字が含まれているか」という条件も加えてチェックし、判定結果を「強い」「中」「弱い」の3段階で表示します。

using System; using System.Linq; namespace SampleApp { public class SampleProgram { public static void Main(string[] args) { string password = "Tora-Password123"; bool hasUpper = password.Any(char.IsUpper); bool hasLower = password.Any(char.IsLower); bool hasDigit = password.Any(char.IsDigit); if (password.Length >= 8 && hasUpper && hasLower && hasDigit) { Console.WriteLine("パスワード強度: 強い"); } else if (password.Length >= 8) { Console.WriteLine("パスワード強度: 中"); } else { Console.WriteLine("パスワード強度: 弱い"); } } } }

出力結果

パスワード強度: 強い

この例では、パスワードの強度を複数の観点から評価しています。System.LinqのAnyメソッドと、文字の種類を判別するchar.IsUpper(大文字)、char.IsLower(小文字)、char.IsDigit(数字)を使い、パスワードにそれぞれの文字種が含まれているかをbool型の変数に保存しています。

最初のif文では、「8文字以上」かつ「大文字、小文字、数字のすべてを含む」という最も厳しい条件をチェックします。この条件を満たす場合、強度は「強い」と判定されます。

満たさない場合は次のelse if文に移り、「8文字以上」であるかという条件のみをチェックします。文字数は満たしているが文字種の組み合わせが不十分な場合は「中」と判定されます。

どの条件にも当てはまらない場合、つまり8文字未満の場合は、最後のelseブロックで「弱い」と判定されます。このように複数の条件を組み合わせることで、実践的なパスワード強度のチェックが可能です。

まとめ

C#のif文は、プログラムの処理の流れをコントロールする重要な構文です。基本的な使い方から応用例まで解説しました。

if文が活躍する場面は次のようなケースです。

if文が活躍する場面

  • ユーザーが入力した内容を検証したいとき
  • 特定の値や状態に応じて処理を分けたいとき
  • エラーが発生した場合に処理を中断させたいとき

if文を用いる上で、押さえておきたいポイントを覚えておきましょう。

重要なポイント

  • 条件式は必ずboolean型を返すよう正確に記述
  • インデントと波括弧で可読性の高いコード構造を維持
  • 複雑な条件では論理演算子を適切に組み合わせて使用

初めてC#を学ぶ方も、記事で紹介したif文を実際に書いて、基本的な使い方を試してみてください。

条件によって処理を分けるコードは、実際の開発で多く使われます。マスターしておけば役立つこと間違いなしです。

ぜひif文をマスターして、より実用的なプログラムを作成できるようになりましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. C#のリファレンス記事一覧
  4. C# if文の使い方