Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az implicit átalakításhoz nincs szükség speciális szintaxisra a forráskódban. Az alábbi példában a Visual Basic implicit módon konvertálja k
értékét egy egyszeres pontosságú lebegőpontos értékké, mielőtt azt hozzárendeli q
.
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k
A explicit konverzió típuskonvertálási kulcsszót használ. A Visual Basic számos ilyen kulcsszót biztosít, amelyek zárójelben kényszerítik a kifejezést a kívánt adattípusra. Ezek a kulcsszavak függvényekhez hasonlóan működnek, de a fordító a kódot beágyazottan hozza létre, így a végrehajtás valamivel gyorsabb, mint egy függvényhívás esetén.
Az előző példa következő bővítésében a CInt
kulcsszó visszaalakítja a q
értéket egy egész számmá, mielőtt hozzárendelné a k
-hez.
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).
Konverziós kulcsszavak
Az alábbi táblázat az elérhető konverziós kulcsszavakat mutatja be.
Típuskonvertálási kulcsszó | Kifejezés adattípussá alakítása | A konvertálható kifejezés adattípusai |
---|---|---|
CBool |
Logikai adattípus | Bármilyen numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat is), String , Object |
CByte |
Bájt adattípus | Bármilyen numerikus típus (beleértve SByte és a felsorolt típusokat), Boolean , String , Object |
CChar |
Karakter adattípusa |
String , Object |
CDate |
Dátum adattípusa |
String , Object |
CDbl |
Dupla adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CDec |
Decimális adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CInt |
Egész szám adattípusa | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CLng |
Hosszú adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CObj |
objektum adattípusa | Bármilyen típus |
CSByte |
SByte adattípus | Bármilyen numerikus típus (beleértve Byte és a felsorolt típusokat), Boolean , String , Object |
CShort |
Rövid adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CSng |
Egyetlen adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CStr |
Sztring adattípusa | Bármilyen numerikus típus (beleértve a Byte , SByte és a felsorolt típusokat), Boolean , Char , Char tömb, Date , Object |
CType |
A vessző (, ) után megadott típus |
Elemi adattípussá (beleértve egy elemi típusú tömböt) való konvertáláskor ugyanazok a típusok, mint a megfelelő konverziós kulcsszó esetében megengedettek Összetett adattípusra való konvertáláskor az általa implementálandó interfészek és azok az osztályok, amelyektől örököl Amikor olyan osztályra vagy struktúrára vált, amelyen túlterhelt CType , az adott osztály vagy struktúra |
CUInt |
UInteger adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CULng |
ULong-adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
CUShort |
UShort-adattípus | Bármely numerikus típus (beleértve Byte a , SByte és a számbavételi típusokat), Boolean , , String Object |
A CType függvény
A CType függvény két argumentumon működik. Az első a konvertálandó kifejezés, a második pedig a cél adattípus vagy objektumosztály. Vegye figyelembe, hogy az első argumentumnak kifejezésnek kell lennie, nem típusnak.
CType
egy beágyazott függvény, ami azt jelenti, hogy a lefordított kód teszi az átalakítást, gyakran függvényhívás létrehozása nélkül. Ez javítja a teljesítményt.
A többi típuskonvertálási kulcsszavak összehasonlítását CType
lásd: DirectCast Operátor és TryCast Operátor.
Elemi típusok
Az alábbi példa bemutatja a CType
használatát.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Összetett típusok
Az értékeket összetett adattípusokká és elemi típusokká alakíthatja CType
. Azt is használhatja, hogy egy objektumosztályt az egyik interfész típusára kényszerítsen, ahogyan az alábbi példában is látható.
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
Tömbtípusok
CType
tömb adattípusokat is konvertálhat, ahogyan az alábbi példában is látható.
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
További információ és példa: Tömbkonvertálások.
CType-et meghatározó típusok
A saját maga által definiált osztályra vagy struktúrára definiálhat CType
. Ez lehetővé teszi az értékek átalakítását az osztály vagy a struktúra típusára és típusából. További információkért és egy példaért tekintse meg a Konverziós operátor definiálása című témakört.
Megjegyzés:
A konverziós kulcsszóval használt értékeknek érvényesnek kell lenniük a céladattípusra, vagy hiba történik. Például, ha egy Long
-et próbál átalakítani egy Integer
-re, akkor a Long
értékének a Integer
adattípus érvényes tartományán belül kell lennie.
Figyelmeztetés
CType
Ha a forrástípus nem a céltípusból származik, az egyik osztálytípusból a másikba való konvertálás futáskor meghiúsul. Egy ilyen hiba InvalidCastException kivételt eredményez.
Ha azonban az egyik típus egy ön által definiált struktúra vagy osztály, és ha az adott struktúrát vagy osztályt definiálta CType
, az átalakítás akkor lehet sikeres, ha megfelel a CType
saját követelményeinek. Lásd : Konverziós operátor definiálása.
Explicit átalakítást úgy is ismerünk, hogy kifejezéseket ad egy adott adattípusra vagy objektumosztályra.