連載
プロフェッショナルVB.NETプログラミング
第1回 さらなる進化を遂げたVisual Basic
(株)ピーデー
川俣 晶
2002/03/16
|
|
もう1つ例を見てみよう。VB.NETで書いたクラス・ライブラリと、C#で書いたクラス・ライブラリが同じように扱えることをサンプル・ソースを通して見てみよう。なお、このサンプル・ソースの詳細はまだ理解できないと思うが、それはそれで構わない。
それでは例として、指定座標に赤色でHelloと出力するメソッドを持つクラス・ライブラリを作成してみよう。新規プロジェクト作成で、Visual Basicのクラス・ライブラリを選んでプロジェクトを作り、以下のようなソースを書き込む。
1: Imports System.Drawing
2:
3: Namespace VBSample
4: Public Class Sample001
5: Public Sub DrawRedHello(ByRef g As Graphics, ByVal x As Integer, ByVal y As Integer)
6: g.DrawString("Hello!", New Font(FontFamily.GenericSansSerif, 12), _
7: Brushes.Red, x, y)
8: End Sub
9: End Class
10: End Namespace |
|
VB.NETで記述した文字列を出力するクラス・ライブラリ |
見慣れないdrawStringというメソッドを呼び出しているが、これは文字を描くための.NET Frameworkの機能である。なお、テンプレートとしてクラス・ライブラリを選んだプロジェクトは、グラフィック関係のモジュールを標準では参照していないので、参照を追加しておく必要がある。
さて、これと同じものをC#でも記述してみよう。これは、まあこんなものだと思って軽く見ていただければよいだろう。機能的にはVB.NET版とほとんど同じである。ワークスペースにC#のクラス・ライブラリを新規プロジェクトとして追加し、以下のようなソースを入力する。
1: using System;
2: using System.Drawing;
3:
4: namespace CSClassLib
5: {
6: public class Sample002
7: {
8: public void DrawRedHello(Graphics g, int x, int y)
9: {
10: g.DrawString("Hello!", new Font(FontFamily.GenericSansSerif, 12),
11: Brushes.Red, x, y);
12: }
13: }
14: } |
|
C#で記述した文字列を出力するクラス・ライブラリ |
さて、これを同じように呼び出して使用できることを示すために、呼び出し側のプログラムを作成してみよう。ワークスペースにVisual BasicのWindowsアプリケーションの新規プロジェクトを追加する。
まずは、同じワークスペース内の2つのクラス・ライブラリを参照に追加する。そして、以下のようにフォームに2個のピクチャーボックスを貼り付ける(ここでは見やすいように背景色を変更してある)。
|
2個のピクチャーボックスを貼り付けたフォーム |
そして以下のようなソースを書き込む。
1: Public Class Form1
2: Inherits System.Windows.Forms.Form
3:
4: #Region " Windows Form Designer generated code "
5:
6: Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
7: Dim sample001 As VBClassLib.VBSample.Sample001
8: sample001 = New VBClassLib.VBSample.Sample001()
9: sample001.DrawRedHello(e.Graphics, 0, 0)
10: End Sub
11:
12: Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
13: Dim sample002 As CSClassLib.Sample002
14: sample002 = New CSClassLib.Sample002()
15: sample002.DrawRedHello(e.Graphics, 0, 0)
16: End Sub
17: End Class |
|
VB.NETとC#で記述したクラス・ライブラリを呼び出すサンプル・プログラム7 |
4行目の部分は、統合環境が自動生成したコードが隠されていることを示す。
これで、上のピクチャーボックスにはVB.NET版のクラス・ライブラリの処理結果が表示され、下のピクチャーボックスにはC#版のクラス・ライブラリの処理結果が表示される。結果は以下のようになる。
|
サンプル・プログラム7の実行結果 |
見てのとおり結果は同じになるが、それは同じクラス・ライブラリのメソッドを呼び出しているからで、当たり前である。それよりも注目していただきたいのは、VB.NETとC#のどちらのクラス・ライブラリのメソッドを呼び出す場合でも、宣言や手順にほとんど差がないことである。複数言語の混在は、このように、VB.NETでは非常にハードルが低くなっている。
まとめ
次回より、VB 6からVB.NETへ変更された言語仕様の細かい相違を順次解説したいと考えている。本当なら、まず継承機能のような大物から解説に取りかかりたいのだが、言語仕様の細かい相違を知らないままサンプル・ソースを見ても、何が何やら分からなくなってしまう恐れがあるため、まず足元から固めていきたいと思う。確かに、変わった点よりも、変わっていない点の方が多いのだが、変わった点だけ数え上げれば、けして少なくはないのである。
では次回もまた会おう。
Insider.NET 記事ランキング
本日
月間