今日の目標→
プログラムコードを使い回せたら楽じゃね? そんなプログラマの永遠の夢を実現するのがライブラリだ。今回はライブラリ自作の基礎を説明する。
●プロジェクトの準備
まずは「TextWork4」という名前で、新規プロジェクトを作る。
●前回作ったクラスを現プロジェクトに組み込んでみる
- メニューバーから「プロジェクト」→「既存の項目の追加」で、ファイルダイアログを開く
- 前回の"TextWork3"プロジェクトのフォルダを探す
- ファイル"RichReporter.cs"を選択する
- 「追加」ボタンの右にある「▼」記号をクリックし、「リンクとして追加」を選択する
これで前回のRichReporterのソースコードにリンクが張られ、このプロジェクトから利用できるようになった。なお、「リンクとして追加」じゃなく、ただの「追加」でも良いのだが、その場合はファイルがまるっとコピーされる。
●RichReporerクラスを利用するコードを書く
- Form1.csを開く
- 次のコードを入力する
こうやって前回書いたコードを読み込んで使えると、コピペとか駆使するよりずっと楽ですね。
さてここで、Print()やColorPrint()などメソッドの呼び出し方は前と同じだが、RichRepoterクラスのクラス名を、
TextWork3.RichRepoter
と長い名前で指定しているのに注目してほしい。
なぜならば、今回のプログラムは「namespace TextWork4」の中で作られているのに対し、前回のプログラムは「namespace TextWork3」で作られていたからだ。このように所属が異なるクラスを指定するには、相手のnamespaceを含む長い名前、すなわち「完全修飾名」を使わなくてはならない。
もし、いちいち完全修飾名を書くのが面倒なら、ファイル先頭で次のように宣言してもよい。
using TextWork3;
このusing宣言があれば、以後クラス名の頭の「TextWork3.」は省略できる。
●なんでnamespaceなんかがあるの
namespaceがあるのは、名前の衝突をできるだけ回避するためだ。コンパイラ内部では常に完全修飾名でクラスが区別されるので、短いクラス名が同じでもnamespaceが違えば異なるクラス名となり、名前がぶつからない。
だから実はnamespaceには、「世界の誰とも一致しない独自の単語」を採用するのが理想だったりする。デフォルトはプロジェクト名と同じnamespaceがついているが、自作ライブラリを作る場合などは、独自のかっこいいnamespaceに書き換えたうえでコードを記述していくとよい。
あ、せっかくだからこれは次回のネタに回します。
●次回の予告
ライブラリの作り方後編。自作クラスをDLL化して、それを呼び出します。