日経ソフトウエア誌2006年12月号の特集1のキャッチコピーに「Cより親切でJavaより書きやすい これから始めるならC# 」とあるようにC#は無視できないプログラミング言語のひとつだ。Eclipse+Visual EditorによるJavaプログラミングにひと区切りがついたこうしろうは次にC#を学ぶ。

 受験勉強で忙しいはずだが,C#には魅力を感じているようだ。

 まずは,基本的な理屈から勉強していく。C#に限らず,Visual Studio2005では,プロジェクトの上位概念としてソリューションがある。具体的には拡張子がslnのファイルが作成され,そのファイルを開くとソリューションの開発状態になる。

 プロジェクトの中にフォームやクラスを作成していく。

 どんな言語でも,最初に作るプログラムはたいてい,Hello World(こんにちは,世界)やHello C#(こんにちは,シーシャープ)だ。ご他聞に漏れず,こうしろうが最初に作ったプログラムもコンソールに「こんにちは」と表示するものだった。それをそのまま載せても,あまり面白くないので違う例を紹介したい。

フォームにラベルとテキストボックス,ボタンを配置した。

(コントロールのnameとtextプロパティ)

テキストボックスtxtNameに名前を入力して,btnOKをクリックすると,こんにちは,(名前)と表示する処理を作る。

 フォームの作り方はVisual Basic2005と変わりない。必要なコントロールを配置して,たとえばボタンをダブルクリックしてコードウィンドウに切り替え,コードを入力していく。

----------------------------------------------------------

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WinFormHello
{
 public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e)
  {
   MessageBox.Show("こんにちは," + txtName.Text);
  }
 }
}

----------------------------------------------------------

上記のコードのうち,自分で入力したコードは,
MessageBox.Show("こんにちは," + txtName.Text);
だけだ。あとは勝手にVisual Studioが生成してくれる。さすがにマイクロソフトの統合開発環境はラクチンである。でも,自動生成されたコードはこれだけではない。

 上記のコードで注目してほしいキーワードがpartial(パーシャル)である。partialは部分的なという意味である。Form1クラスは部分的なのである。

 では片割れというか,他の部分がどこにあるかと言うと,Form1.Designer.csとして作成されている。
----------------------------------------------------------

   // label1
   this.label1.AutoSize = true;
   this.label1.Location = new System.Drawing.Point(37, 36);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(61, 12);
   this.label1.TabIndex = 0;
   this.label1.Text = "お名前は?";
   // txtName
   this.txtName.Location = new System.Drawing.Point(37, 72);
   this.txtName.Name = "txtName";
   this.txtName.Size = new System.Drawing.Size(139, 19);
   this.txtName.TabIndex = 1;

----------------------------------------------------------

 Form1.Designer.csにはラベルやテキストボックスを作成して,フォームに配置するコードが記述されている。コントロール部品をグラフィカルな操作で,配置することによって作成されたコードが別の部分(partial)としてまとめられているのだ。この仕様により,自動生成されたコードを意識することなく,自分が作りたい処理のプログラミングに専念できるのである。