Реализация метода в пользовательских элементах управления
Метод реализуется в элементе управления таким же образом, как метод будет реализован в любом другом компоненте.
В 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
, которые могут содержать любой тип данных, так как это может привести к ошибкам, которые могут не быть пойманы в тестировании.
Заметка
Универсальный тип данных в общем языке выполнения CLR — 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.
}
См. также
.NET Desktop feedback