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


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

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

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

См. также