2005)でWindowsアプリケーションのプロジェクトを新規作成したときに自動生成される初期コード(以降、ひな型コード)を見ながら、Mainメソッドの処理内容から、プログラム全体のコード内容までを一通り解説する。■Mainメソッドの内容の理解まずは、Mainメソッドの処理内容について見ていくことにしよう。前回も示したが、MainメソッドはProgram.csファイルの中にある。Form1());」という1文がある。これがMainメソッドのキモとなる処理内容である。Program」については前回説明した。Mainメソッドのスコープを見ると、まず次のような文がある。Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);これらの文の詳細な説明は(.NET初学者には不要と思われるので)割愛するが、何のためのコードか分からないとすっきりしないと思うので、その意味だけを簡単に述べておく。XPスタイルの外観にするには?」を参照)。「Application.SetCompatibleTextRenderingDefault(false);」はWindowsフォーム上のコントロールなどにテキストを描画する既定(=デフォルト)の方法を切り替えるためのもので、このコードのようにパラメータ(=入力)にfalseを指定して呼び出すと、よりパフォーマンスに優れたテキスト描画を行ってくれる*1。2005ではこれに加えて、以前のWindows標準エンジンである「GDI」もサポートされるようになった。2002/2003との互換性がなくなるので、注意が必要である。続いて次の1文がある。Form1());実はこの1文では、2つのメソッドが1つに組み合わされて使用されている。これを2つに分解すると、次のようになる。Form1()メソッドが実行される順番は、(1)のパラメータ部分に当たる(2)が先に実行され、次に(1)が実行される。よって、この順番で解説していこう。(2)は、Form1クラスのインスタンスを作るためのメソッドである(前回説明した「メソッドの使用パターン1」のケース)。このメソッドは、次の2点で普通のメソッドとは異なる特殊なメソッドである。<クラスの名称>()」という構文のように、先頭にnew演算子(VBではNew演算子)が付くメソッドはクラスのインスタンスを作成するためのもので、このようなメソッドは「コンストラクタ」と呼ばれる。実はオブジェクト指向では、このコンストラクタ・メソッドこそがオブジェクトを生成するための仕組みである。Windowsアプリケーションのひな型コードでは、アプリケーション実行のきっかけとしてMainメソッドが呼ばれ、最初にこのForm1コンストラクタでForm1オブジェクトが作成される。その後はこのForm1オブジェクトからさまざまなオブジェクトを生成して、アプリケーションが動作するというわけである(前回も図解で説明した)。次に(1)の「Application.Run(<オブジェクト>)」メソッドは、(2)で生成されたForm1オブジェクトをパラメータ(=入力)として受け取っている。戻り値はvoid(=なし)なので*2、Runメソッドの戻り値は無視している(=どこにも代入していない。前回説明した「メソッドの使用パターン2」のケース)。2005のヘルプであるMSDNライブラリを参照するが、その参照方法については次回以降で詳しく説明する。(Form)」を参照するとよい。このApplication.Runメソッドも、Mainメソッドと同じく静的メソッドである。オブジェクトがなくてもメソッドを呼び出すことができる。いう疑問を持つ読者がいるかもしれない。この「Application」はオブジェクトではなく、クラスである。「Application.Run(<オブジェクト>)」というコードは、ApplicationクラスのRunメソッド(静的メソッド)を呼び出しているということである。このコードで使われている静的メソッドの呼び出し形式を構文としてまとめると、次のようになる。<クラス名>.メソッド名(パラメータ);一方、クラスのオブジェクトを経由して、動的メソッド(=静的メソッド以外のメソッド)を呼び出す形式を構文としてまとめると、次のようになる。<クラス名>();オブジェクト変数.メソッド名(パラメータ);つまり、通常のメソッドでは必ずコンストラクタでオブジェクトを生成してから、生成されたオブジェクトを経由してメソッドを呼び出す必要がある。それに対し、静的メソッドの呼び出しではオブジェクトを生成せずに、クラスの中のメソッドを直接呼び出すことになる。よって、静的メソッドであるRunメソッドは、Application.Run(<オブジェクト>)という呼び出し形式になっている。このApplicationクラスは、.NETのクラス・ライブラリに用意されているクラスで、System.Windows.Forms名前空間にある。上の「Application.Run(<オブジェクト>)」というコードでは、「System.Windows.Forms.Application」のように名前空間を付けずに呼び出している。このように名前空間なしでクラスが呼び出せる理由は、使用するクラスの名前空間が事前に宣言されているからだ。具体的には、ソース・コードの先頭に次の記述があるためである。<名前空間>;」の形式でコードの先頭にあらかじめ記述しておくことで、名前空間を省略してそのクラスが使えるようになる。Windowsアプリケーションのひな型コードでは、System.Windows.Forms名前空間だけでなく、さまざまな名前空間が宣言されている。これらの名前空間とその内容を次の表にまとめた(ただし、表の内容欄に書かれている用語の説明は割愛させていただく)。文字列を操作するためのクラスが含まれている名前空間ひな型コードに追加されるusingディレクティブによる名前空間の宣言(C#)なお、ここまでの説明で、冒頭にあった「Application.EnableVisualStyles();」と「Application.SetCompatibleTextRenderingDefault(false);」も、System.Windows.Forms名前空間Applicationクラスの静的メソッドであることが分かっただろう。それでは次に、このApplication.Runメソッドは実際にはどのような処理を行っているかについて解説しよう。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。