Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Algemene objectvariabelen (dat wil zeggen, variabelen die u declareert als Object) kunnen objecten uit elke klasse bevatten. Wanneer u variabelen van het type gebruikt Object, moet u mogelijk verschillende acties uitvoeren op basis van de klasse van het object. Sommige objecten bieden bijvoorbeeld mogelijk geen ondersteuning voor een bepaalde eigenschap of methode. Visual Basic biedt twee manieren om te bepalen welk type object wordt opgeslagen in een objectvariabele: de TypeName functie en de TypeOf...Is operator.
TypeName en TypeOf... Is
De TypeName functie retourneert een tekenreeks en is de beste keuze wanneer u de klassenaam van een object wilt opslaan of weergeven, zoals wordt weergegeven in het volgende codefragment:
Dim Ctrl As Control = New TextBox
MsgBox(TypeName(Ctrl))
De TypeOf...Is operator is de beste keuze voor het testen van het type van een object, omdat het veel sneller is dan een equivalente tekenreeksvergelijking met behulp van TypeName. Het volgende codefragment gebruikt TypeOf...Is binnen een If...Then...Else statement:
If TypeOf Ctrl Is Button Then
MsgBox("The control is a button.")
End If
Een waarschuwing is hier op zijn plaats. De TypeOf...Is operator retourneert True als een object van een specifiek type is of is afgeleid van een specifiek type. Bijna alles wat u met Visual Basic doet, omvat objecten die sommige elementen bevatten die normaal gesproken niet als objecten worden beschouwd, zoals tekenreeksen en gehele getallen. Deze objecten zijn afgeleid van en overnemen methoden van Object. Wanneer een Integer wordt doorgegeven en geƫvalueerd met Object, retourneert de TypeOf...Is operator True. In het volgende voorbeeld wordt weergegeven dat de parameter InParam zowel een Object als een Integer is:
Sub CheckType(ByVal InParam As Object)
' Both If statements evaluate to True when an
' Integer is passed to this procedure.
If TypeOf InParam Is Object Then
MsgBox("InParam is an Object")
End If
If TypeOf InParam Is Integer Then
MsgBox("InParam is an Integer")
End If
End Sub
In het volgende voorbeeld wordt gebruikgemaakt van beide TypeOf...Is en TypeName om het type object te bepalen dat aan het object is doorgegeven in het Ctrl argument. De TestObject procedure roept ShowType drie verschillende soorten besturingselementen aan.
Om het voorbeeld uit te voeren
Maak een nieuw Windows-toepassingsproject en voeg een Button besturingselement, een CheckBox besturingselement en een RadioButton besturingselement toe aan het formulier.
Roep de procedure aan via de knop op uw formulier
TestObject.Voeg de volgende code toe aan uw formulier:
Sub ShowType(ByVal Ctrl As Object) 'Use the TypeName function to display the class name as text. MsgBox(TypeName(Ctrl)) 'Use the TypeOf function to determine the object's type. If TypeOf Ctrl Is Button Then MsgBox("The control is a button.") ElseIf TypeOf Ctrl Is CheckBox Then MsgBox("The control is a check box.") Else MsgBox("The object is some other type of control.") End If End Sub Protected Sub TestObject() 'Test the ShowType procedure with three kinds of objects. ShowType(Me.Button1) ShowType(Me.CheckBox1) ShowType(Me.RadioButton1) End Sub