Type Casting i Visual Basic. net
leveret af Molly Pell, Senior Systems Analyst
Visual Basic.net giver to muligheder for støbning.
- CType: kaster eller konverterer en type til en anden type. Hvis typerne ikke stemmer overens, kan tvang udføres.
- DirectCast: kaster en type til en anden type med bedre ydeevne end CType, men udfører ikke tvang, hvis typerne ikke stemmer overens.
Bemærk: CType omfatter alle VB konvertering funktioner. Disse er CBool, CByte, CChar, CDate, CDec, CDbl, CInt, CLng, CObj, CShort, Csngog CStr.
hovedforskellen mellem de to er, at DirectCast kun fungerer, hvis den angivne type og Run-time-typen af udtrykket er de samme. Denne forskel vises kun, når du konverterer fra en objekttype til en værditype eller fjerner en værdi.
for eksempel vil følgende DirectCast-operation mislykkes, fordi den boksede type af objektet O ikke er et heltal:
Dim O som objekt = 1.5
Dim I som heltal = DirectCast(O, heltal) ‘ forårsager en run-time fejl.
Dim I som heltal = CType(O, heltal) ‘ forårsager ikke en kørselsfejl.
DirectCast-operationen i dette eksempel vil på den anden side lykkes:
Dim O som objekt = 1
Dim I som heltal = DirectCast(O, heltal) ‘ lykkes.
Dim I som heltal = CType(O, heltal) ‘ lykkes, men er langsommere end DirectCast
ved konvertering fra et objekt til en værditype eller fjernelse af boks har DirectCast-operatøren bedre ydeevne end ctype-operatøren. Visual Basic .NET compiler genererer fire linjer IL kode til DirectCast. Brug af CType får imidlertid Visual Basic. net compiler til at generere et opkald til en konverteringsmetode, der er godt over hundrede linjer IL-kode. Denne metode kalder igen andre metoder. I præstationskritisk kode kan forskellen være betydelig. Hvis tvang er nødvendig, skal du dog stadig bruge ctype-operationen eller udføre tvang manuelt.
for eksempel:
Dim O som objekt = 1.5
Dim f som Single = DirectCast(O, Single) ‘Cast til runtime-typen
Dim I som Integer = CType(f, Integer)’ CType er OK her, da denne
‘ cast ikke afkobles ‘f’
konklusion
når du skriver støbning fra en objekttype til en værditype eller udpakning, skal du først afgøre, om type tvang er nødvendig. Hvis ingen tvang er nødvendig (dvs.den boksede type af værdien er den samme som den type, der er angivet i cast-udtrykket), skal du bruge DirectCast-udtrykket til at øge applikationsydelsen.
dette tip og flere fundet til dig med Total. net analysator! Se FMS. net analysator for mere information.