Visual Basic .NET Language
Déclaration de variables
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 | 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