.NET & Control > ブロック内ブロック
のぶ亭『プログラミングの相談窓口』 … 様々なプログラミング問題を個別対応致します |
ブロック内ブロック
ブロック間の関係
{}で囲むブロックですが、内部には複文を記述します。ブロック{}は入れ子にすることができます。
ステートメントの言語仕様が一般的ですが、その他には
- 処理範囲を明確にする場合
- 変数をその範囲内で破棄する場合
両方の場合もあります
void func(int value) { ・・・ { int a = 10; switch(value) { case 1:文;break; case 2:文;break; case 3:文;break; case 4:文;break; case 5:文;break; } ・・・ } int a = 100; ・・・ }
ブロック内での変数はブロック外から見ると無いに等しい=つまり複数のブロック内は同じ変数が使えるということです。
入れ子のブロック間で影響を受けるのはブロックの外と中の変数です。
ブロック内に宣言した変数は、そのブロックを抜けると参照できなくなります。一時的な変数として扱うことができます。
フロックの外にある変数名とブロック内の変数名が同じだと混乱するので警告がでます。
ブロックを記述しない、暗黙のブロック
ステートメント内が単文の場合、明示的なブロック{}は省略することができます。(省略するかどうかはケースバイケースです。あった方がいい場合もありますし、無い方がスッキリする場合もあります)