連載C#入門第9回 ステートメント |
ステートメントとは
古い世代のプログラム言語では、すべての機能を言語仕様に取り込んでしまうことが多かった。その後、入出力などの機能は言語の一部ではなく、ライブラリに置く方向に進化してきた。そのため、BASICではステートメントとして言語の一部であった多くの機能がライブラリに移動した。C#でもステートメントの種類は大幅に減少している。ステートメントとして残ったものは、ライブラリでは実現できない最小限度のものに限られている。しかし、種類は少ないものの、条件判断や繰り返しなどよく使われるものが多いので、習得は必須と言える。今回は、C#の主要なステートメントを取り上げ、解説する。
ブロック
C#で最も基本となるステートメントがブロックである。ブロックは複数のステートメントを集めて1つのステートメントであるかのように見せかける機能を持つ。これにより、1つのステートメントに作用する機能に対して、複数のステートメントを与えることが可能になる。たとえば、後で述べるifステートメントでは、条件成立時に実行できるステートメントは1個だけだが、その1個をこのブロック・ステートメントにすれば、何個でもステートメントを実行させることができる。いちいち説明しないが他のステートメントでも同様である。
ブロック・ステートメントの構文は簡単で、“{”(中カッコ始め)記号で始まり、“}”(中カッコ閉じ)記号で終わるだけである。
ブロック・ステートメントはローカル変数の寿命に影響を与えることに注意が必要だ。以下のサンプルソースを見ていただきたい。
|
|
ブロック・ステートメントを使用するサンプル・プログラム |
11行目で宣言された変数bは、ブロック・ステートメントの中で宣言されているので、寿命はブロックの範囲内に限定される。つまり、14行目を超えると変数bは存在しなくなる。そのため、16行目で変数bを利用しようとすると、コンパイル・エラーになってしまう。ブロックが終わった後で使いたい変数はブロックの外で宣言する必要がある。
ブロックは、変数がメソッド内のある特定の範囲でしか使われないことを明示的に示すためにも使われる。つまり、ブロック外から参照することが無意味な変数を誤って参照すれば、コンパイル・エラーになってプログラマに気付くチャンスを与えるというわけである。
なお、このサンプルソースを実行した結果は以下のようになる。
プログラムの実行結果 |
ローカル変数の寿命はブロックの範囲内に限定される。 |
変数と定数の宣言
話は前後するが、ローカル変数を宣言することも、一種のステートメントとして扱われている。すでに何回も使ってきた機能なので、改めてくどくど説明することもないだろう。
宣言する際に、手前にconstキーワードを付加すると、ローカル変数ではなく、ローカル定数となる。定数は値を決めたらいっさい変更できない。以下のサンプルソースの9行目がローカル変数の宣言である。10行目がローカル定数の宣言になる。ローカル変数は11行目のように値を変更できるが、ローカル定数は、12行目のように値を変更するコードを書くとコンパイル・エラーになる。
|
|
変数と定数の宣言を示すサンプル・プログラム |
なお、このサンプルソースを実行した結果は以下のようになる。
プログラムの実行結果 |
変数の宣言ではconstキーワードを付けると定数となる。定数は、値を決めたら、いっさいそれを変更できない。 |
INDEX | ||
C#入門 第9回 ステートメント | ||
1.ステートメントとは | ||
2.分岐 | ||
3.繰り返しのコントロール | ||
「C#入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|