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
.NET Desktop feedback