ネプラスのテックブログ。ネットワーク、クラウド、サーバなどのITインフラ情報を中心に発信中。

  1. ネプラス インフラエンジニア採用
  2. テックマガジン
  3. テクノロジー
  4. C#のswitch文を解説!if文との違いやさまざまな使い方を紹介

C#のswitch文を解説!if文との違いやさまざまな使い方を紹介

  • テクノロジー
  • プログラミング
公開日時:   更新日時:
C#のswitch文を解説!if文との違いやさまざまな使い方を紹介
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    C#エンジニア 案件・求人一覧はこちら

    C#のswitch文とは?

    まずはswitch文を使ってみよう

    C#にはswitch文という便利な文法があります。他の言語でもswitch文を使えることが多いのですが、C#のswitch文は使いやすいと評価が高いのです。C#を学ぶ人は是非このswitch文を使いこなしてください。

    switch文の例を以下に示します。

    これを実行すると、結果は以下になります。

    value is two.

    switch文はif文よりコードが見やすい!

    上の例は変数valの値が1ならone、2ならtwo、それ以外ならout of valueを表示するという処理です。これをif文で書くと、以下のようなコードになります。caseが多い場合、if文にするとelse if (条件)…が続いて冗長になります。switch文の方が見やすいですよね。

    C#のswitch文は安全

    C#のswitch文は他の言語とは違う特徴があります。それはフォールスルーを禁止していることです。以下のコードはvalが1でない時だけメッセージを出すことを意図していますが、このようなbreakを省略したコードはエラーになります。

    C#のswitch文はC#が優れた言語である証

    上の例はcase 2:にbreak;が無いという理由でエラーになります。意図的に省略したいこともあるかもしれませんが、実際はbreakを入れ忘れてしまうことの方が多く見受けられます。

    CやC++やJavaではこのbreakの省略をエラーにしてくれないので、バグが起こることがとても多いのです。C#のswitch文のbreak省略禁止は、他の言語に対する優位性を示す例としてよく挙げられます。そのためC#を使うならswitch文を活用するべきなのです。

    breakの代わりにreturnも使える

    switch文のbreakは省略できませんが、breakの代わりにreturnを使うことはできます。以下がその例です。

    実行すると2が表示されます。breakを使うよりもシンプルですね。ただしreturnしたらそこでGetValメソッドを抜けるので、その後の処理は実行されないことに注意してください。

    enum列挙子を使ったswitch文

    C#には列挙子という定数のグループを宣言できるルールがあります。この列挙子はswitch文と非常に相性が良いのです。以下のように使います。

    これを実行すると以下が表示されます。

    color is blue.

    列挙子とswitch文を使えばわかりやすいプログラムを書けますね。

    object変数の型による分岐

    C#はobject型という、数値型でも文字列型でも代入できる便利な変数型があります。そしてswitch文はobject型の変数の実体によって分岐できるのです。具体的な例は以下の通りです。

    実行結果は以下になります。

    文字列 オブジェクト

    型による分岐はwhen句を追加できる

    caseにobject型の変数の型を指定した場合は、when句で条件を追加することができます。具体的には以下のようなコードになります。

    結果は

    under 5 value 3

    になります。

    when句を使う場合の注意

    なお例えば以下のように、値によって複数のcaseが該当してしまう場合はどうなるのでしょうか。

    この場合、objが5未満であれば”under 5″が戻ります。つまり上のcaseの方が優先されるのです。ただこのように値によって複数のcaseが該当する可能性がある場合は、if文を使用した方が分かりやすいコードになるでしょう。

    複数の値のマッチングで分岐する

    C#のswitch文は1つのcaseに複数の条件を指定することができます。以下が例です。

    これを実行すると「太郎君、成人おめでとう」と表示されます。

    switch文の中にswitch文を書く

    上のような例は以下のようにすれば同じことが出来ます。

    このように入れ子になることをネストと言います。C言語のような古くからある言語ではこのようにするのが普通です。しかしネストが何重にもなると非常に読みづらくバグが起こりやすいコードになります。caseに複数の条件が指定できるC#のswitch文はとても便利ですね。

    式によるシンプルな表現

    C#のswitch文は簡略化した記述をすることができます。以下に例を示します。

    これを実行すると以下のようになります。

    value is two.

    caseではなく=>という表記を使います。valの値によって、strに入れる文字列を変えるという処理をこんなにシンプルに書けるのです。

    おわりに

    C#のswitch文についてご理解頂けましたでしょうか。C#のswitch文はC、C++、Javaといった他の言語に比べてバグが起こりにくいような配慮がされていて、かつそれらの言語よりも様々な記述が可能になっています。C#のswitch文を是非活用して、素晴らしいプログラムを作り上げてください。

    C#エンジニア 案件・求人一覧はこちら

    FEnetを運営しているネプラス株式会社はサービス開始から10年以上
    『エンジニアの生涯価値の向上』をミッションに掲げ、
    多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
    ネプラス株式会社ロゴ

    ネプラス株式会社はこんな会社です

    秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • インフラ業界に特化

      インフラ業界に特化

      ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。

      業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。

    • 正社員なのにフリーランスのような働き方

      正社員なのにフリーランスのような働き方

      正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。

      プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。

    • 大手直取引の高額案件

      大手直取引の高額案件

      案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。

      Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。

    • スキルアップ支援

      スキルアップ支援

      不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。

      受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など

      ※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。

    • 現給与を保証します!

      100%現給与保証

      前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。

      ※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。

    • インセンティブ制度

      インセンティブ制度

      ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。

      取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。

    • 社会保険・福利厚生

      社会保険・福利厚生

      社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。

      さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    ネプラス株式会社に興味を持った方へ

    ネプラス株式会社では、インフラエンジニアを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    オンライン面接も随時受付中。ぜひお気軽にご応募ください。

    ネプラス株式会社へのご応募はこちら↓
    ネプラス株式会社へのご応募はこちら↓

    C#新着案件New Job

    CCNA取得者歓迎!案件・求人はこちら