連載

C#入門

第2回 ネームスペースとクラス

(株)ピーデー
川俣 晶
2001/03/15

Hello Worldの仕組み

 まず最初に、前回のプログラムがどういう仕組みになっているかを説明しよう。前回のプログラムのソースコードは以下のような内容であった。

    1: namespace ConsoleApplication1
    2: {
    3:     using System;
    4: 
    5:     /// <summary>
    6:     ///    Summary description for Class1.
    7:     /// </summary>
    8:     public class Class1
    9:     {
   10:         public Class1()
   11:         {
   12:             //
   13:             // TODO: Add Constructor Logic here
   14:             //
   15:         }
   16: 
   17:         public static int Main(string[] args)
   18:         {
   19:             Console.WriteLine("Hello World!");
   20:             return 0;
   21:         }
   22:     }
   23: }
前回ご紹介したHello Worldプログラム
このHello Worldプログラムのソースコードを含むプロジェクトファイルはこちら。
hello.zip(6Kbytes)

 まず、1行目の“namespace”というキーワードに注目していただきたい。これはネームスペースを宣言するキーワードである。ここでは、“ConsoleApplication1”という名前のネームスペースを宣言している。そして、ネームスペース“ConsoleApplication1”の範囲はというと、その後の中括弧({ })で囲まれた範囲と言うことになる。つまり2行目の開き中括弧から、23行目の閉じ中括弧までが、ネームスペース“ConsoleApplication1”に属すると言うわけである。 

 さて、3行目から7行目までは取り敢えず横に置き、8行目を注目していただきたい。この行の“class”というキーワードがクラスを宣言している。ここでは“Class1”という名前のクラスを宣言している。クラスの範囲は、ネームスペースと同様、その後ろの中括弧が決める。つまり、クラス“Class1”の範囲は9行目から22行目までである。“class”キーワードの前に付いている“public”とは、プログラムのどこからでもこのクラスを利用できるという意志を示すために付けるキーワードである。とりあえず最初は“public”だけ覚えておけばプログラムを書けるが、C#を深く知るようになれば他のキーワードを使ってアクセスを制限することもできる。

 10行目から16行目は、このサンプル・プログラムでは特に何も機能しないコードなので、横に置こう。17行目はメソッドの宣言である。この1行は、プログラムの実行が始まったとき、最初に実行されるメソッドを宣言するお約束である。メソッドを宣言するにあたって、“namespace”や“class”のようにメソッドであることを示すキーワードは特に存在しない。ごく大ざっぱに言えば、メソッド名の後ろに括弧を付けた宣言は、メソッドの宣言と解釈される。ここでは、“Main”がメソッドの名前で、その後ろにある括弧が“Main”がメソッドであることを示している。括弧の内部は、メソッドの引数だが、これは今回は利用していないので解説は割愛しよう。“Main”の手前には“public static int”というキーワードが並んでいるが、それぞれ意味がある。“public”は、このメソッドを別のクラスから呼び出せるという意味である。“static”とは、オブジェクトを生成しなくても呼び出し可能であることを示すが、これはオブジェクト指向とも関係することなので、次回以降で詳しく説明しよう。ここではメソッドには“static”を付けると思っておいてほしい。“int”とは整数型で、“Main”メソッドの戻り値のデータ型を示す。ここでは、値を返す機能を利用していないのだが、Mainメソッドを書くときのお約束なので、整数型を戻すとしている。メソッドの範囲は、“namespace”などと同じく、後ろの中括弧の範囲である。ここでは18行目から21行目までがそれに該当する。

 さて、ここまでは、ネームスペースやクラスやメソッドを宣言する構文であった。ここからは、逆に、すでにあるネームスペースやクラスやメソッドを利用する構文に関する話になる。19行目の“Console.WriteLine("Hello World!");”という部分は、ConsoleというクラスのWriteLineというメソッドを呼び出すという機能を記述している。このメソッドはコンソールに引数の文字列を表示するという機能を持つ。だが、ここで、「おや?」と思わないだろうか。このソースコードのなかには、ConsoleというクラスもWriteLineというメソッドも宣言されていない。実は、このクラスは、Systemというネームスペースのなかに存在する。Systemネームスペースは、標準のクラス・ライブラリのなかに含まれているもので、必ずあるものと仮定して利用することができる。しかし、クラス・ライブラリには膨大な数のネームスペースがあり、任意のネームスペース内のクラスをも自由に利用可能にはできない。同じ名前のクラスが異なるネームスペースにあったりするからだ。

 そこで意味を持ってくるのが3行目である。“using”とは指定されたネームスペースを利用するという宣言である。ここでは“System”というキーワードを続けて記述することで、Systemネームスペースを利用すると宣言している。そして、終わりの印として最後にセミコロン(;)記号を必ず書き込む。“using”は2行目から23行目までの中括弧の範囲内に記述されているので、この範囲内からSystemネームスペースを利用するという意志を示したものと言える。当然、19行目の“Console.WriteLine("Hello World!");”はその範囲内なので、“using”の指定が作用する。Consoleクラスはここには宣言されていないので、“using”を指定されたSystemネームスペースと仮定して処理されるのである。

 この手順は、便利なクラスの宝庫であるクラス・ライブラリを活用する際に知っておく必要がある。よく頭に入れておこう。

 なお20行目の“return 0;”は今の段階では、“Main”メソッドのお約束と言うことにしよう。意味はいずれ解説する。


 INDEX
  C#入門 第2回 ネームスペースとクラス
    1.C#プログラムの構造
  2.Hello Worldの仕組み
    3.メソッドのフルネーム
 
「C#入門」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間