Partager via


Comment : optimiser le stockage d'entiers positifs avec les types non signés

Mise à jour : novembre 2007

Si vous avez une variable qui contient uniquement des valeurs positives (ou 0) et que ces valeurs ne dépassent jamais 4 294 967 295, vous pouvez déclarer la variable en tant que UInteger plutôt que Long.

L'avantage de UInteger est que les types entiers de 32 bits Integer et UInteger sont les types de données les plus efficaces sur les plateformes 32 bits et qu'ils fournissent les performances optimales pour votre application.

Vous pouvez utiliser une variable Integer si vos valeurs positives ne dépassent jamais 2 147 483 647.

Pour déclarer un entier avec uniquement des valeurs positives

  • Déclarez la variable As UInteger. L'exemple suivant illustre ce comportement :

    Public Function memoryRequired(ByVal m As UInteger) As UInteger
        Static r As UInteger = 0
        Try
            r += m
        Catch eo As System.OverflowException
            r = 0
        Catch ex As System.Exception
            MsgBox("Incrementing required memory causes """ & ex.Message & """")
        End Try
        Return r
    End Function
    

    Vous pouvez tester la fonction memoryRequired à l'aide du code suivant :

    Public Sub consumeMemoryRequired()
        Dim m1 As UInteger = UInteger.MaxValue - 100
        Dim m2 As UInteger = 100
        MsgBox("Max = " & CStr(UInteger.MaxValue) & vbCrLf & _
            CStr(m1) & " -> " & CStr(memoryRequired(m1)) & vbCrLf & _
            "+ " & CStr(m2) & " -> " & CStr(memoryRequired(m2)) _
            & vbCrLf & "+ 1 -> " & CStr(memoryRequired(1)))
    End Sub
    
    Attention :

    Le type de données UInteger ne faisant pas partie de Spécification CLS (Common Language Specification), le code conforme CLS ne peut pas consommer un composant qui l'utilise.

Voir aussi

Tâches

Comment : appeler une fonction Windows qui possède des types non signés

Référence

Liste des types de données (Visual Basic)

Integer, type de données (Visual Basic)

UInteger, type de données