カスタム コントロールへのメソッドの実装
更新 : 2007 年 11 月
コントロールにメソッドを実装する方法は、他のコンポーネントにメソッドを実装する場合と同じです。
Visual Basic では、値を返す必要のあるメソッドは Public Function として実装されます。値が返されない場合は、Public Sub として実装されます。メソッドを宣言する構文を次に示します。
Public Function ConvertMatterToEnergy(Matter as Integer) As Integer
' Conversion code goes here.
End Function
関数は値を返すため、整数、文字列、オブジェクトなど、戻り値の型を指定する必要があります。Function プロシージャや Sub プロシージャが引数をとる場合は、引数も指定する必要があります。
Visual Basic とは異なり、C# では関数とプロシージャが区別されません。メソッドは、値を返すか、または void を返します。C# のパブリック メソッドは、次の構文で宣言します。
public int ConvertMatterToEnergy(int matter)
{
// Conversion code goes here.
}
メソッドを宣言するときには、できる限り、そのすべての引数を明示的なデータ型として宣言します。オブジェクト参照を使用する引数は、特定のクラス型として宣言してください。たとえば、As Object ではなく As Widget と宣言します。Visual Basic では、既定の設定である Option Strict によって、この規則が自動的に適用されます。
型付き引数を使用することで、開発者によるエラーの多くを実行時ではなくコンパイル時に検出できます。コンパイラは常にエラーを検出しますが、実行時のテストはテスト用スイートと同程度の精度しか持ちません。
オーバーロードされたメソッド
コントロールのユーザーがメソッドに異なる組み合わせのパラメータを指定できるようにする場合は、明示的なデータ型を使用して、メソッドの複数のオーバーロードを提供します。任意のデータ型を含むことができる As Object としてパラメータを宣言することは避けてください。このようなパラメータを作成すると、テスト時にエラーが検出されない場合があります。
Visual Basic メモ : |
---|
共通言語ランタイムの汎用データ型は、Variant ではなく Object です。Variant は言語から削除されています。詳細については汎用データ型の変更点 (Visual Basic 6.0 ユーザー向け) および汎用データ型の変更点 (Visual Basic 6.0 ユーザー向け). |
次の例では、Widget という仮想のコントロールに Spin メソッドがあり、スピンの方向と速度を直接指定するか、角運動量を吸収する他の Widget オブジェクトを指定できます。
Overloads Public Sub Spin( _
ByVal SpinDirection As SpinDirectionsEnum, _
ByVal RevolutionsPerSecond As Double)
' Implementation code here.
End Sub
Overloads Public Sub Spin(ByVal Driver As Widget) _
' Implementation code here.
End Sub
public void Spin(SpinDirectionsEnum spinDirection, double revolutionsPerSecond)
{
// Implementation code here.
}
public void Spin(Widget driver)
{
// Implementation code here.
}