Partager via


Fonctions de conversion de type (Visual Basic)

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 BooleanInteger. 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, CSByteCIntCUShortCLng, CUInt) CULng: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, , CIntCLng, CSByte, CShort, , CUIntCULnget ) suppriment la partie fractionnaire et CUShortarrondissez 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 et CLng diffère des IntFix fonctions, qui tronquent, plutôt que arrondir, la partie fractionnaire d’un nombre. En outre, Fix et Int 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.0 Date en valeur Date 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’origine Date 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 de Parse(String, IFormatProvider) ce type de valeur. Par exemple, utilisez-la Double.Parse lors de la conversion d’une chaîne en chaîne Doubleet lors Double.ToString de la conversion d’une valeur de type Double en chaîne.

CType, fonction

La fonction CType prend un deuxième argument, typenameet 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 Integeret 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)

Voir aussi