Sdílet prostřednictvím


Implementace metody ve vlastních ovládacích prvcích

Metoda se implementuje v ovládacím prvku stejným způsobem jako metoda by byla implementována v jakékoli jiné komponentě.

V jazyce Visual Basic, pokud je metoda nutná k vrácení hodnoty, je implementována jako Public Function. Pokud se nevrátí žádná hodnota, implementuje se jako Public Sub. Metody jsou deklarovány pomocí následující syntaxe:

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

Vzhledem k tomu, že funkce vracejí hodnotu, musí zadat návratový typ, například celé číslo, řetězec, objekt atd. Argumenty procedur Function nebo Sub, pokud existují, musí být také uvedeny.

Jazyk C# nerozlišuje mezi funkcemi a procedurami, stejně jako Jazyk Visual Basic. Metoda buď vrátí hodnotu, nebo vrátí void. Syntaxe pro deklarování veřejné metody jazyka C#je:

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

Když deklarujete metodu, deklarujte všechny její argumenty jako explicitní datové typy, kdykoli je to možné. Argumenty, které přebírají odkazy na objekty, by měly být deklarovány jako konkrétní typy tříd , například As Widget místo As Object. Ve Visual Basicu výchozí nastavení Option Strict toto pravidlo automaticky vynucuje.

Typové argumenty umožňují kompilátoru zachytit mnoho chyb vývojáře již při kompilaci, místo za běhu. Kompilátor vždy zachytává chyby, zatímco testování za běhu je stejně dobré jako testovací sada.

Přetížené metody

Pokud chcete uživatelům vašeho ovládacího prvku povolit zadávání různých kombinací parametrů metodě, zadejte více přetížení metody pomocí explicitních datových typů. Vyhněte se vytváření parametrů deklarovaných As Object, které mohou obsahovat libovolný datový typ, protože to může vést k chybám, které nemusí být zachyceny při testování.

Poznámka

Univerzální datový typ v modulu CLR (Common Language Runtime) je spíše Object než Variant. Variant byl odebrán z jazyka.

Například metoda Spin hypotetického Widget řízení může umožňovat přímou specifikaci směru a rychlosti otáčení, nebo specifikaci jiného Widget objektu, ze kterého má být absorbována úhlová dynamika:

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

Viz také