日経ソフトウエア誌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)としてまとめられているのだ。この仕様により,自動生成されたコードを意識することなく,自分が作りたい処理のプログラミングに専念できるのである。