Dela via


Metodimplementering i anpassade kontroller

En metod implementeras i en kontroll på samma sätt som en metod implementeras i andra komponenter.

Om en metod krävs för att returnera ett värde i Visual Basic implementeras den som en Public Function. Om inget värde returneras implementeras det som en Public Sub. Metoderna deklareras med följande syntax:

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

Eftersom funktioner returnerar ett värde måste de ange en returtyp, till exempel heltal, sträng, objekt och så vidare. De argument som procedurerna Function eller Sub tar, om det finns några, måste också anges.

C# gör ingen skillnad mellan funktioner och procedurer, som Visual Basic gör. En metod returnerar antingen ett värde eller returnerar void. Syntaxen för att deklarera en offentlig C#-metod är:

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

När du deklarerar en metod deklarerar du alla dess argument som explicita datatyper när det är möjligt. Argument som tar objektreferenser bör deklareras som specifika klasstyper, till exempel As Widget i stället för As Object. I Visual Basic tillämpar standardinställningen Option Strict automatiskt den här regeln.

Genom att använda typsatta argument kan många utvecklarfel fångas av kompilatorn i stället för vid körning. Kompilatorn fångar alltid upp fel, medan körningstestning bara är lika bra som testpaketet.

Överlagrade metoder

Om du vill tillåta att användare av din kontroll tillhandahåller olika kombinationer av parametrar till en metod anger du flera överlagringar av metoden med explicita datatyper. Undvik att skapa parametrar som deklarerats As Object som kan innehålla alla datatyper, eftersom detta kan leda till fel som kanske inte fångas i testningen.

Not

Den universella datatypen i Common Language Runtime är Object i stället för Variant. Variant har tagits bort från språket.

Till exempel kan den Spin metoden för en hypotetisk Widget kontroll tillåta antingen direkt specifikation av rotationsriktning och hastighet, eller specifikation av ett annat Widget objekt som vinkelmomentet ska absorberas från:

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

Se även