OVH Cloud OVH Cloud

Ctype(x) ou CInt(x) ?

1 réponse
Avatar
Olivier
Bonjour

Pour caster dans un type integer par exemple,

Ctype(myVar, Integer)

ou

CInt(MyVar)

Mieux, pas mieux, pourquoi ?


Merci
Olivier

1 réponse

Avatar
Zoury
Salut Olivier!

c'est identique.
CInt() n'existe qu'en VB pour des raisons de compatiblité. CType(xx, Int32)
est la version .NET de la même commande.

d'ailleurs on peut utiliser ILDASM.EXE afin d'observer le code intermédiaire
générer par le compilateur :
'***
' Module1
Option Explicit On

Module MainModule

Public Sub Main()

Console.WriteLine(Conv1(1.4))
Console.WriteLine(Conv2(1.4))

End Sub

Public Function Conv1(ByVal sng As Single) As Int32
Return CType(sng, Int32)
End Function
'.method public static int32 Conv1(float32 sng) cil managed
'{
' // Code size 9 (0x9)
' .maxstack 1
' .locals init (int32 V_0)
' IL_0000: ldarg.0
' IL_0001: conv.r8
' IL_0002: call float64 [mscorlib]System.Math::Round(float64)
' IL_0007: conv.ovf.i4
' IL_0008: ret
'} // end of method MainModule::Conv1

Public Function Conv2(ByVal sng As Single) As Int32
Return CInt(sng)
End Function
'.method public static int32 Conv2(float32 sng) cil managed
'{
' // Code size 9 (0x9)
' .maxstack 1
' .locals init (int32 V_0)
' IL_0000: ldarg.0
' IL_0001: conv.r8
' IL_0002: call float64 [mscorlib]System.Math::Round(float64)
' IL_0007: conv.ovf.i4
' IL_0008: ret
'} // end of method MainModule::Conv2

End Module
'***

Ça génère le même code. :O)

--
Cordialement
Yanick
MVP pour Visual Basic
"Olivier" <aa.aa.aa> a écrit dans le message de
news:
Bonjour

Pour caster dans un type integer par exemple,

Ctype(myVar, Integer)

ou

CInt(MyVar)

Mieux, pas mieux, pourquoi ?


Merci
Olivier