Поделиться через


Реализация метода в пользовательских элементах управления

Метод реализуется в элементе управления таким же образом, как метод будет реализован в любом другом компоненте.

В 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.  
}  

См. также