Udostępnij za pośrednictwem


Implementacja metody w kontrolkach niestandardowych

Metoda jest implementowana w kontrolce w taki sam sposób, jak metoda byłaby implementowana w każdym innym składniku.

W języku Visual Basic, jeśli metoda jest wymagana do zwrócenia wartości, jest implementowana jako Public Function. Jeśli żadna wartość nie zostanie zwrócona, zostanie zaimplementowana jako Public Sub. Metody są deklarowane przy użyciu następującej składni:

Public Function ConvertMatterToEnergy(Matter as Integer) As Integer  
   ' Conversion code goes here.  
End Function  

Ponieważ funkcje zwracają wartość, muszą określić typ zwracany, taki jak liczba całkowita, ciąg, obiekt itd. Argumenty, które przyjmują procedury Function lub Sub, jeśli są, należy również określić.

Język C# nie rozróżnia funkcji i procedur, tak jak w języku Visual Basic. Metoda zwraca wartość lub zwraca void. Składnia deklarowania publicznej metody języka C# to:

public int ConvertMatterToEnergy(int matter)  
{  
   // Conversion code goes here.  
}  

Podczas deklarowania metody zadeklaruj wszystkie jej argumenty jako jawne typy danych, jeśli to możliwe. Argumenty, które przyjmują odwołania do obiektów, powinny być deklarowane jako określone typy klas — na przykład As Widget zamiast As Object. W języku Visual Basic ustawienie domyślne Option Strict automatycznie wymusza tę regułę.

Wpisane argumenty umożliwiają przechwyceniu wielu błędów deweloperów przez kompilator, a nie w czasie wykonywania. Kompilator zawsze wykrywa błędy, podczas gdy testy w czasie wykonywania są tylko tak dobre, jak zestaw testów.

Metody przeciążone

Jeśli chcesz zezwolić użytkownikom kontrolki na dostarczanie różnych kombinacji parametrów do metody, podaj wiele przeciążeń metody przy użyciu jawnych typów danych. Unikaj tworzenia zadeklarowanych parametrów As Object, które mogą zawierać dowolny typ danych, ponieważ może to prowadzić do błędów, które mogą nie zostać przechwycone podczas testowania.

Notatka

Uniwersalny typ danych w środowisku uruchomieniowym języka wspólnego jest Object, a nie Variant. Variant został usunięty z języka.

Na przykład metoda Spin hipotetycznego sterowania Widget może zezwalać na bezpośrednią specyfikację kierunku i prędkości spinu lub specyfikację innego obiektu Widget, z którego ma zostać wchłonięty pęd kątowy:

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

Zobacz też