CType-funktion (Visual Basic)
Returnerar resultatet av att explicit konvertera ett uttryck till en angiven datatyp, objekt, struktur, klass eller gränssnitt.
Syntax
CType(expression, typename)
Delar
expression
Valfritt giltigt uttryck. Om värdet för expression
ligger utanför det intervall som tillåts av typename
genererar Visual Basic ett undantag.
typename
Alla uttryck som är lagliga i en As
-sats i en Dim
-instruktion, dvs. namnet på alla datatyper, objekt, struktur, klass eller gränssnitt.
Kommentarer
Dricks
Du kan också använda följande funktioner för att utföra en typkonvertering:
- Skriv konverteringsfunktioner som
CByte
,CDbl
ochCInt
som utför en konvertering till en viss datatyp. Mer information finns i Type Conversion Functions (Typkonverteringsfunktioner). - DirectCast-operator ellerTryCast-operator. Dessa operatorer kräver att en typ ärver från eller implementerar den andra typen. De kan ge något bättre prestanda än
CType
vid konvertering till och frånObject
datatypen.
CType
kompileras infogat, vilket innebär att konverteringskoden är en del av koden som utvärderar uttrycket. I vissa fall körs koden snabbare eftersom inga procedurer anropas för att utföra konverteringen.
Om ingen konvertering har definierats från expression
till typename
(till exempel från Integer
till Date
) visar Visual Basic ett felmeddelande om kompileringstid.
Om en konvertering misslyckas vid körningen genereras lämpligt undantag. Om en begränsad konvertering misslyckas är ett OverflowException av de vanligaste resultaten. Om konverteringen är odefinierad utlöses en InvalidCastException in. Detta kan till exempel inträffa om expression
är av typen Object
och dess körningstyp inte har någon konvertering till typename
.
Om datatypen expression
för eller typename
är en klass eller struktur som du har definierat kan du definiera CType
den klassen eller strukturen som en konverteringsoperator. Detta fungerar CType
som en överbelastad operator. Om du gör detta kan du styra beteendet för konverteringar till och från din klass eller struktur, inklusive de undantag som kan genereras.
Konverteringsnyckelord
En jämförelse av nyckelorden för typkonvertering är följande.
Nyckelord | Datatyper | Argumentrelation | Körningsfel |
---|---|---|---|
CType |
Alla datatyper | Utvidga eller begränsa konverteringen måste definieras mellan de två datatyperna | Kastar InvalidCastException |
DirectCast-operator | Alla datatyper | En typ måste ärva från eller implementera den andra typen | Kastar InvalidCastException |
TryCast | Endast referenstyper | En typ måste ärva från eller implementera den andra typen | Returnerar ingenting |
Överbelastning
Operatorn CType
kan också överbelastas på en klass eller struktur som definierats utanför koden. Om koden konverteras till eller från en sådan klass eller struktur bör du vara säker på att du förstår beteendet hos dess CType
operatör. Mer information finns i Operatorprocedurer.
Konvertera dynamiska objekt
Typkonverteringar av dynamiska objekt utförs av användardefinierade dynamiska konverteringar som använder TryConvert metoderna eller BindConvert . Om du arbetar med dynamiska objekt använder du CTypeDynamic metoden för att konvertera det dynamiska objektet.
Exempel
I följande exempel används CType
funktionen för att konvertera ett uttryck till Single
datatypen.
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
Ytterligare exempel finns i Implicita och explicita konverteringar.