Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ces fonctions sont compilées inline, ce qui signifie que le code de conversion fait partie du code qui évalue l’expression. Parfois, il n’existe aucun appel à une procédure pour effectuer la conversion, ce qui améliore les performances. Chaque fonction force une expression à un type de données spécifique.
Syntaxe
CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)
Composant
expression
Obligatoire. Toute expression du type de données source.
Type de données valeur de retour
Le nom de la fonction détermine le type de données de la valeur qu’il retourne, comme indiqué dans le tableau suivant.
Nom de la fonction | Type de données de retour | Plage d’arguments expression |
---|---|---|
CBool |
Type de données booléen | Toute expression valide Char ou String numérique. |
CByte |
Type de données d’octet |
Byte.MinValue (0) à Byte.MaxValue (255) (non signé) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion à virgule flottante en octets avec la CByte fonction . Pour plus d’informations, consultez la section Remarques . Consultez la section Exemple CInt pour obtenir un exemple. |
CChar |
Type de données Char | Toute expression ou String valide Char ; seul le premier caractère d’un String est converti ; la valeur peut être comprise entre 0 et 65535 (non signé). |
CDate |
Date (type de données) | Toute représentation valide d’une date et d’une heure. |
CDbl |
Type de données Double | -1.79769313486231570E+308 à -4.94065645841246544E-324 pour les valeurs négatives ; 4.94065645841246544E-324 à 1.79769313486231570E+308 pour les valeurs positives. |
CDec |
Type de données décimal | +/-79 228 162 514 264 337 593 543 950 335 pour les nombres mis à l’échelle zéro, c’est-à-dire les nombres sans décimales. Pour les nombres avec 28 décimales, la plage est +/-7.92281625142643375935543950335. Le plus petit nombre non nul possible est 0,000000000000000000000000001 (+/-1E-28). |
CInt |
Type de données Integer |
Int32.MinValue (-2 147 483 648) à Int32.MaxValue (2 147 483 647) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion à virgule flottante en entier avec la CInt fonction ; consultez la section Remarques pour plus d’informations. Consultez la section Exemple CInt pour obtenir un exemple. |
CLng |
Type de données Long |
Int64.MinValue (-9 223 372 036 854 775 808) à Int64.MaxValue (9 223 372 036 854 775 807) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion d’entier à virgule flottante en entier 64 bits avec la CLng fonction . Pour plus d’informations, consultez la section Notes . Consultez la section Exemple CInt pour obtenir un exemple. |
CObj |
Type de données de l'objet | Toute expression valide. |
CSByte |
Type de données SByte |
SByte.MinValue (-128) à SByte.MaxValue (127) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion d’octets à virgule flottante avec la CSByte fonction . Pour plus d’informations, consultez la section Remarques . Consultez la section Exemple CInt pour obtenir un exemple. |
CShort |
Type de données Short |
Int16.MinValue (-32 768) à Int16.MaxValue (32 767) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion d’entiers à virgule flottante en entier 16 bits avec la CShort fonction . Pour plus d’informations, consultez la section Notes . Consultez la section Exemple CInt pour obtenir un exemple. |
CSng |
Type de données unique | -3.402823E+38 à -1.401298E-45 pour les valeurs négatives ; 1.401298E-45 à 3.402823E+38 pour les valeurs positives. |
CStr |
Type de données de chaîne | Retourne pour CStr dépendre de l’argument expression . Consultez Les valeurs renvoyées pour la fonction CStr. |
CUInt |
Type de données UInteger |
UInt32.MinValue (0) à UInt32.MaxValue (4 294 967 295) (non signé) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion à virgule flottante en entier non signé avec la CUInt fonction . Pour plus d’informations, consultez la section Remarques . Consultez la section Exemple CInt pour obtenir un exemple. |
CULng |
Type de données ULong |
UInt64.MinValue (0) à UInt64.MaxValue (18 446 744 073 709 551 615) (non signé) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion à virgule flottante en entiers longs non signés avec la CULng fonction . Pour plus d’informations, consultez la section Remarques . Consultez la section Exemple CInt pour obtenir un exemple. |
CUShort |
Type de données UShort |
UInt16.MinValue (0) à UInt16.MaxValue (65 535) (non signé) ; les parties fractionnaires sont arrondies.1 À compter de Visual Basic 15.8, Visual Basic optimise les performances de la conversion d’entiers 16 bits non signé avec la CUShort fonction. Pour plus d’informations, consultez la section Remarques . Consultez la section Exemple CInt pour obtenir un exemple. |
1 Parties fractionnaires peuvent être soumises à un type spécial d’arrondi appelé arrondi de banquier. Pour plus d’informations, consultez « Remarques ».
Remarques
En règle générale, vous devez utiliser les fonctions de conversion de type Visual Basic en préférence pour les méthodes .NET Framework telles que ToString()
, sur la Convert classe ou sur une structure de type ou une classe individuelle. Les fonctions Visual Basic sont conçues pour une interaction optimale avec le code Visual Basic et facilitent également la lecture de votre code source. En outre, les méthodes de conversion .NET Framework ne produisent pas toujours les mêmes résultats que les fonctions Visual Basic, par exemple lors de la conversion en Boolean
Integer
. Pour plus d’informations, consultez Résolution des problèmes liés aux types de données.
À compter de Visual Basic 15.8, les performances de la conversion à virgule flottante en entier sont optimisées lorsque vous passez la Single ou la valeur retournée par les méthodes suivantes à l’une des fonctions de conversion entière (CByte
, CShort
, CSByte
CInt
CUShort
CLng
, CUInt
) CULng
:Double
- Conversion.Fix(Double)
- Conversion.Fix(Object)
- Conversion.Fix(Single)
- Conversion.Int(Double)
- Conversion.Int(Object)
- Conversion.Int(Single)
- Math.Ceiling(Double)
- Math.Floor(Double)
- Math.Round(Double)
- Math.Truncate(Double)
Cette optimisation permet au code qui effectue un grand nombre de conversions d’entiers de s’exécuter jusqu’à deux fois plus rapidement. L’exemple suivant illustre ces conversions à virgule flottante optimisées en entier :
Dim s As Single = 173.7619
Dim d As Double = s
Dim i1 As Integer = CInt(Fix(s)) ' Result: 173
Dim b1 As Byte = CByte(Int(d)) ' Result: 173
Dim s1 AS Short = CShort(Math.Truncate(s)) ' Result: 173
Dim i2 As Integer = CInt(Math.Ceiling(d)) ' Result: 174
Dim i3 As Integer = CInt(Math.Round(s)) ' Result: 174
Comportement
Coercition. En général, vous pouvez utiliser les fonctions de conversion de type de données pour forcer le résultat d’une opération vers un type de données particulier plutôt que le type de données par défaut. Par exemple, utilisez
CDec
pour forcer l’arithmétique décimale dans les cas où une seule précision, une double précision ou une arithmétique entière aurait normalement lieu.Conversions ayant échoué. Si le
expression
passage à la fonction est en dehors de la plage du type de données vers lequel il doit être converti, un OverflowException événement se produit.Parties fractionnaires. Lorsque vous convertissez une valeur non intégrée en type intégral, les fonctions de conversion entière (
CByte
, ,CInt
CLng
,CSByte
,CShort
, ,CUInt
CULng
et ) suppriment la partie fractionnaire etCUShort
arrondissez la valeur à l’entier le plus proche.Si la partie fractionnaire est exactement 0,5, les fonctions de conversion entière l’arrondit à l’entier pair le plus proche. Par exemple, 0,5 arrondi à 0, et 1,5 et 2,5 arrondis à 2. C’est parfois ce qu’on appelle l’arrondi des banquiers, et son objectif est de compenser un biais qui pourrait s’accumuler lors de l’ajout de nombreux nombres de ces chiffres ensemble.
CInt
etCLng
diffère des IntFix fonctions, qui tronquent, plutôt que arrondir, la partie fractionnaire d’un nombre. En outre,Fix
etInt
retournez toujours une valeur du même type de données que vous transmettez.Conversions de date/heure. Utilisez la IsDate fonction pour déterminer si une valeur peut être convertie en date et heure.
CDate
reconnaît les littéraux de date et les littéraux d’heure, mais pas les valeurs numériques. Pour convertir une valeur Visual Basic 6.0Date
en valeurDate
dans Visual Basic 2005 ou version ultérieure, vous pouvez utiliser la DateTime.FromOADate méthode.Valeurs de date/heure neutres. Le type de données Date contient toujours les informations de date et d’heure. À des fins de conversion de type, Visual Basic considère que 1/0001 (le 1er janvier de l’année 1) est une valeur neutre pour la date et que 00:00:00 (minuit) est une valeur neutre pour l’heure. Si vous convertissez une
Date
valeur en chaîne,CStr
n’inclut pas de valeurs neutres dans la chaîne résultante. Par exemple, si vous effectuez une conversion#January 1, 0001 9:30:00#
en chaîne, le résultat est « 9:30:00 AM » ; les informations de date sont supprimées. Toutefois, les informations de date sont toujours présentes dans la valeur d’origineDate
et peuvent être récupérées avec des fonctions telles que DatePart la fonction.Sensibilité de la culture. Les fonctions de conversion de type impliquant des chaînes effectuent des conversions en fonction des paramètres de culture actuels de l’application. Par exemple,
CDate
reconnaît les formats de date en fonction du paramètre de paramètres régionaux de votre système. Vous devez fournir le jour, le mois et l’année dans l’ordre correct pour vos paramètres régionaux, ou la date peut ne pas être interprétée correctement. Un format de date long n’est pas reconnu s’il contient une chaîne de jour de la semaine, telle que « Mercredi ».Si vous devez effectuer une conversion vers ou à partir d’une représentation sous forme de chaîne d’une valeur dans un format autre que celui spécifié par vos paramètres régionaux, vous ne pouvez pas utiliser les fonctions de conversion de type Visual Basic. Pour ce faire, utilisez les
ToString(IFormatProvider)
méthodes deParse(String, IFormatProvider)
ce type de valeur. Par exemple, utilisez-la Double.Parse lors de la conversion d’une chaîne en chaîneDouble
et lors Double.ToString de la conversion d’une valeur de typeDouble
en chaîne.
CType, fonction
La fonction CType prend un deuxième argument, typename
et force expression
à typename
, où typename
il peut s’agir de n’importe quel type de données, structure, classe ou interface vers lequel il existe une conversion valide.
Pour une comparaison de CType
avec les autres mots clés de conversion de type, consultez l'opérateur DirectCast et l'opérateur TryCast.
Exemple CBool
L’exemple suivant utilise la CBool
fonction pour convertir des expressions en Boolean
valeurs. Si une expression est évaluée à une valeur différente de zéro, CBool
retourne True
; sinon, elle retourne False
.
Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)
Exemple CByte
L’exemple suivant utilise la CByte
fonction pour convertir une expression en .Byte
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
Exemple CChar
L’exemple suivant utilise la CChar
fonction pour convertir le premier caractère d’une String
expression en type Char
.
Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)
L’argument d’entrée à CChar
contenir doit être de type Char
de données ou String
. Vous ne pouvez pas utiliser CChar
pour convertir un nombre en caractère, car CChar
il n’est pas possible d’accepter un type de données numérique. L’exemple suivant obtient un nombre représentant un point de code (code de caractère) et le convertit en caractère correspondant. Il utilise la InputBox fonction pour obtenir la chaîne de chiffres, CInt
pour convertir la chaîne en type Integer
et ChrW
pour convertir le nombre en type Char
.
Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)
Exemple CDate
L’exemple suivant utilise la CDate
fonction pour convertir des chaînes en Date
valeurs. En général, les dates et heures de codage en dur sous forme de chaînes (comme illustré dans cet exemple) ne sont pas recommandées. Utilisez des littéraux de date et des littéraux d’heure, tels que #Feb 12, 1969# et #4:45:23 PM#, à la place.
Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)
Exemple CDbl
Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)
Exemple CDec
L’exemple suivant utilise la CDec
fonction pour convertir une valeur numérique en Decimal
.
Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)
Exemple CInt
L’exemple suivant utilise la CInt
fonction pour convertir une valeur en Integer
.
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
Exemple CLng
L’exemple suivant utilise la CLng
fonction pour convertir des valeurs en Long
.
Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)
Exemple CObj
L’exemple suivant utilise la CObj
fonction pour convertir une valeur numérique en Object
. La Object
variable elle-même ne contient qu’un pointeur de quatre octets, qui pointe vers la Double
valeur qui lui est affectée.
Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)
Exemple CSByte
L’exemple suivant utilise la CSByte
fonction pour convertir une valeur numérique en SByte
.
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
Exemple CShort
L’exemple suivant utilise la CShort
fonction pour convertir une valeur numérique en Short
.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
Exemple CSng
L’exemple suivant utilise la CSng
fonction pour convertir des valeurs en Single
.
Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)
Exemple CStr
L’exemple suivant utilise la CStr
fonction pour convertir une valeur numérique en String
.
Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)
L’exemple suivant utilise la CStr
fonction pour convertir Date
des valeurs en String
valeurs.
Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)
CStr
affiche toujours une Date
valeur au format court standard pour les paramètres régionaux actuels, par exemple « 15/6/2003 4:35:47 PM ». Toutefois, CStr
supprime les valeurs neutres du 1/1/0001 pour la date et 00:00:00 pour l’heure.
Pour plus d’informations sur les valeurs retournées par CStr
, consultez Valeurs de retour pour la fonction CStr.
Exemple CUInt
L’exemple suivant utilise la CUInt
fonction pour convertir une valeur numérique en UInteger
.
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
Exemple CULng
L’exemple suivant utilise la CULng
fonction pour convertir une valeur numérique en ULong
.
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
Exemple CUShort
L’exemple suivant utilise la CUShort
fonction pour convertir une valeur numérique en UShort
.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)