Recherche…


Syntaxe

  • Compteur public As Integer
  • Compteur privé comme entier
  • Compteur de comptage As Integer

Déclarer et assigner une variable en utilisant un type primitif

Les variables dans Visual Basic sont déclarées à l'aide du mot clé Dim . Par exemple, cela déclare une nouvelle variable appelée counter avec le type de données Integer :

Dim counter As Integer

Une déclaration de variable peut également inclure un modificateur d'accès , tel que Public , Protected , Friend ou Private . Cela fonctionne conjointement avec la portée de la variable pour déterminer son accessibilité.

Modificateur d'accès Sens
Publique Tous les types pouvant accéder au type englobant
Protégé Seule la classe englobante et celles qui en héritent
Ami Tous les types d'un même assemblage pouvant accéder au type englobant
Ami protégé La classe englobante et ses héritiers, ou les types du même assembly pouvant accéder à la classe englobante
Privé Seul le type de clôture
Statique Seulement sur les variables locales et ne s'initialise qu'une seule fois.

En tant que raccourci, le mot-clé Dim peut être remplacé par le modificateur d’accès dans la déclaration de la variable:

Public TotalItems As Integer
Private counter As Integer

Les types de données pris en charge sont décrits dans le tableau ci-dessous:

Type Alias Allocation de mémoire Exemple
SByte N / A Un octet Dim example As SByte = 10
Int16 Court 2 bytes Dim example As Short = 10
Int32 Entier 4 octets Dim example As Integer = 10
Int64 Longue 8 octets Dim example As Long = 10
Unique N / A 4 octets Dim example As Single = 10.95
Double N / A 8 octets Dim example As Double = 10.95
Décimal N / A 16 octets Dim example As Decimal = 10.95
Booléen N / A Dicté par la mise en œuvre de la plate-forme Dim example As Boolean = True
Carboniser N / A 2 octets Dim example As Char = "A"C
Chaîne N / A formule la source Dim example As String = "Stack Overflow"
DateTime Rendez-vous amoureux 8 octets Dim example As Date = Date.Now
Octet N / A 1 octet Dim example As Byte = 10
UInt16 UShort 2 octets Dim example As UShort = 10
UInt32 UInteger 4 octets Dim example As UInteger = 10
Utt64 ULong 8 octets Dim example As ULong = 10
Objet N / A Architecture 32 bits 4 octets, architecture 64 bits 8 octets Dim example As Object = Nothing

Il existe également des caractères de type identifiant et littéral utilisables en remplacement du type textuel et / ou pour forcer le type littéral:

Type (ou alias) Caractère de type d'identifiant Caractère de type littéral
Court N / A example = 10S
Entier Dim example% example = 10% ou example = 10I
Longue Dim example& example = 10& ou example = 10L
Unique Dim example! example = 10! ou example = 10F
Double Dim example# example = 10# ou example = 10R
Décimal Dim example@ example = 10@ ou example = 10D
Carboniser N / A example = "A"C
Chaîne Dim example$ N / A
UShort N / A example = 10US
UInteger N / A example = 10UI
ULong N / A example = 10UL

Les suffixes intégraux sont également utilisables avec des préfixes hexadécimaux (& H) ou octaux (& O):
example = &H8000S ou example = &O77&

Les objets de date (heure) peuvent également être définis en utilisant une syntaxe littérale:
Dim example As Date = #7/26/2016 12:8 PM#

Une fois qu'une variable est déclarée, elle existera dans la portée du type contenant, Sub - Function ou Function déclarée, à titre d'exemple:

Public Function IncrementCounter() As Integer
    Dim counter As Integer = 0
    counter += 1

    Return counter
End Function

La variable de compteur n'existera que jusqu'à la End Function et sera alors hors de portée. Si cette variable de compteur est nécessaire en dehors de la fonction, vous devrez la définir au niveau de la classe / structure ou du module.

Public Class ExampleClass

    Private _counter As Integer
   
    Public Function IncrementCounter() As Integer
       _counter += 1
       Return _counter
    End Function

End Class

Vous pouvez également utiliser le modificateur Static (à ne pas confondre avec Shared ) pour permettre à une variable locale de conserver sa valeur entre les appels de sa méthode englobante:

Function IncrementCounter() As Integer
    Static counter As Integer = 0
    counter += 1

    Return counter
End Function

Niveaux de déclaration - Variables locales et membres

Variables locales - Celles déclarées dans une procédure (sous-routine ou fonction) d'une classe (ou d'une autre structure). Dans cet exemple, exampleLocalVariable est une variable locale déclarée dans ExampleFunction() :

Public Class ExampleClass1

    Public Function ExampleFunction() As Integer
        Dim exampleLocalVariable As Integer = 3
        Return exampleLocalVariable
    End Function

End Class

Le mot-clé Static permet de conserver une variable locale et de conserver sa valeur après la terminaison (où généralement les variables locales cessent d'exister à la fin de la procédure contenant).

Dans cet exemple, la console est 024 . À chaque appel à ExampleSub() de Main() la variable statique conserve la valeur ExampleSub() à la fin de l'appel précédent:

Module Module1

    Sub Main()
        ExampleSub()
        ExampleSub()
        ExampleSub()
    End Sub

    Public Sub ExampleSub()
        Static exampleStaticLocalVariable As Integer = 0
        Console.Write(exampleStaticLocalVariable.ToString)
        exampleStaticLocalVariable += 2
    End Sub

End Module

Variables de membre - Déclarées en dehors de toute procédure, au niveau de la classe (ou autre structure). Il peut s'agir de variables d'instance , dans lesquelles chaque instance de la classe contenante possède sa propre copie distincte de cette variable ou de variables Shared , qui existent en tant que variable unique associée à la classe elle-même, indépendamment de toute instance.

Ici, ExampleClass2 contient deux variables membres. Chaque instance du ExampleClass2 a un individu ExampleInstanceVariable accessible via la référence de classe. La variable partagée ExampleSharedVariable est cependant accessible en utilisant le nom de la classe:

Module Module1

    Sub Main()

        Dim instance1 As ExampleClass4 = New ExampleClass4
        instance1.ExampleInstanceVariable = "Foo"

        Dim instance2 As ExampleClass4 = New ExampleClass4
        instance2.ExampleInstanceVariable = "Bar"

        Console.WriteLine(instance1.ExampleInstanceVariable)
        Console.WriteLine(instance2.ExampleInstanceVariable)
        Console.WriteLine(ExampleClass4.ExampleSharedVariable)

    End Sub

    Public Class ExampleClass4

        Public ExampleInstanceVariable As String
        Public Shared ExampleSharedVariable As String = "FizzBuzz"

    End Class

End Module

Exemple de modificateurs d'accès

Dans l'exemple suivant, considérez que vous disposez d'une solution hébergeant deux projets: ConsoleApplication1 et SampleClassLibrary . Le premier projet aura les classes SampleClass1 et SampleClass2 . Le second aura SampleClass3 et SampleClass4 . En d'autres termes, nous avons deux assemblées avec deux classes chacune. ConsoleApplication1 a une référence à SampleClassLibrary .

Voir comment SampleClass1.MethodA interagit avec d'autres classes et méthodes.

SampleClass1.vb:

Imports SampleClassLibrary

Public Class SampleClass1
    Public Sub MethodA()
        'MethodA can call any of the following methods because
        'they all are in the same scope.
        MethodB()
        MethodC()
        MethodD()
        MethodE()

        'Sample2 is defined as friend. It is accessible within
        'the type itself and all namespaces and code within the same assembly.
        Dim class2 As New SampleClass2() 
        class2.MethodA()
        'class2.MethodB() 'SampleClass2.MethodB is not accessible because
                          'this method is private. SampleClass2.MethodB
                          'can only be called from SampleClass2.MethodA,
                          'SampleClass2.MethodC, SampleClass2.MethodD
                          'and SampleClass2.MethodE
        class2.MethodC()
        'class2.MethodD() 'SampleClass2.MethodD is not accessible because
                          'this method is protected. SampleClass2.MethodD
                          'can only be called from any class that inherits
                          'SampleClass2, SampleClass2.MethodA, SampleClass2.MethodC,
                          'SampleClass2.MethodD and SampleClass2.MethodE
        class2.MethodE()

        Dim class3 As New SampleClass3() 'SampleClass3 resides in other
                                         'assembly and is defined as public.
                                         'It is accessible anywhere.
        class3.MethodA()
        'class3.MethodB() 'SampleClass3.MethodB is not accessible because
                          'this method is private. SampleClass3.MethodB can
                          'only be called from SampleClass3.MethodA,
                          'SampleClass3.MethodC, SampleClass3.MethodD
                          'and SampleClass3.MethodE

        'class3.MethodC() 'SampleClass3.MethodC is not accessible because
                          'this method is friend and resides in another assembly.
                          'SampleClass3.MethodC can only be called anywhere from the
                          'same assembly, SampleClass3.MethodA, SampleClass3.MethodB,
                          'SampleClass3.MethodD and SampleClass3.MethodE

        'class4.MethodD() 'SampleClass3.MethodE is not accessible because
                          'this method is protected friend. SampleClass3.MethodD
                          'can only be called from any class that resides inside
                          'the same assembly and inherits SampleClass3,
                          'SampleClass3.MethodA, SampleClass3.MethodB,
                          'SampleClass3.MethodC and SampleClass3.MethodD      

        'Dim class4 As New SampleClass4() 'SampleClass4 is not accessible because
                                          'it is defined as friend and resides in
                                          'other assembly.
    End Sub

    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass2.vb:

Friend Class SampleClass2
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub

    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass3.vb:

Public Class SampleClass3
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub
    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass4.vb:

Friend Class SampleClass4
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub
    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow