2020年10月28日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 1111 count

【入門級】そのelseはどのifに対応するの?

Written By: 川俣 晶連絡先

ifとelseの迷宮 §

 "if(条件式1) if(条件式2) 実行文1 else 実行文2"と書いた時、elseは2つめのifが成立しなかった時となります。最初のifには対応しません。2番目のifにもelseがあれば最初のifに対応できます。つまり、"if(条件式1) if(条件式2) 実行文1 else 実行文2 else 実行文3"なら、最後のelseは最初のifに対応します。

 では、elseを増やさないで対処する方法があるのかといえばあります。

 2つめのif文を波括弧で囲えば良いのです。

 "if(条件式1) { if(条件式2) 実行文1 } else 実行文2"

 これでelseは最初のif文に対応するようになります。

罠の数々 §

  • ifとelseを別の行にするとIDEが勝手にインデントを付けてくれることが多い。その結果、elseがどのifに対応するのかがすぐ分かる。罠に落ちやすいのは同じ行にifとelseを複数書いたときである。

参考リンク §

if-else (C# リファレンス)

ステートメント (C# プログラミング ガイド)

 波括弧の説明は、実は上記のステートメントのページにある。そのページを参照して確認してみよう。

 そして、波括弧の役割は通常複数の文をまとめて1つの文として扱うことにあるのだが、実は今回の事例では【1つしかステートメントを囲っていない】のである。それにも関わらず、なぜ囲ったのか理由を考えてみよう。

リポジトリ §

https://github.com/autumn009/cshowto

ifelse §

using System;

class Program

{

    static void Main()

    {

        // 結果が6 7 であって欲しいとき

        for (int i = 0; i < 9; i++)

        {

            if (i > 5) if (i > 7) continue; else Console.Write($"{i} ");

        }

        Console.WriteLine();

        // 結果が0 1 2 3 4 5 であって欲しいとき

        for (int i = 0; i < 9; i++)

        {

            if (i > 5) { if (i > 7) continue; } else Console.Write($"{i} ");

        }

        Console.WriteLine();

    }

}

実行結果

6 7

0 1 2 3 4 5

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
10月
29日
【入門級】switchステートメントの短い書き方・breakなしのcase
3days 0 count
total 1147 count
【C# コーディング How To】の前のコンテンツ
2020年
10月
27日
【入門級】キーが押されたら止まるプログラム
3days 0 count
total 1664 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20201028103316
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.