自定义控件中的方法实现
控件中方法的实现与任何其他组件中方法的实现方式相同。
在 Visual Basic 中,如果要求方法返回一个值,则方法以 Public Function
形式实现。 如果不返回值,则方法以 Public Sub
形式实现。 使用以下语法声明方法:
Public Function ConvertMatterToEnergy(Matter as Integer) As Integer
' Conversion code goes here.
End Function
由于函数返回一个值,所以这些数必须指定返回类型(例如整型、字符串型、对象等等)。 可能的话,还须指定 Function
或 Sub
过程所使用的参数。
C# 与 Visual Basic 一样,不区分函数和过程。 方法返回值或返回 void
。 声明 C# 公共方法的语法是:
public int ConvertMatterToEnergy(int matter)
{
// Conversion code goes here.
}
在声明方法时,应尽可能将它的所有参数都声明为显式数据类型。 接受对象引用的参数应被声明为特定的类类型,例如 As Widget
而不是 As Object
。 在 Visual Basic 中,默认设置 Option Strict
将自动执行此规则。
键入的参数允许编译器捕获由开发人员犯的很多错误,而不是在运行时才捕获。 编译器总是捕获错误,而运行时测试只相当于测试套件。
重载方法
如果想允许控件的用户为某个方法提供参数的不同组合,则应使用显式数据类型提供该方法的多个重载。 应避免创建声明 As Object
的参数,这样声明的参数可以包含任何数据类型,从而会产生测试时无法捕获的错误。
注意
公共语言运行时中的通用数据类型是 Object
而不是 Variant
。 Variant
已从该语言中移除。
例如,有一个假想的 Spin
控件,其 Widget
方法可能允许直接指定旋转方向和速度,或者允许指定另一个 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.
}