Visual Basic .NET Language
Dichiarazione di variabili
Ricerca…
Sintassi
- Contatore pubblico As Integer
- _Counter privato come numero intero
- Contatore dim Come numero intero
Dichiarare e assegnare una variabile usando un tipo primitivo
Le variabili in Visual Basic sono dichiarate usando la parola chiave Dim
. Ad esempio, questo dichiara una nuova variabile chiamata counter
con il tipo di dati Integer
:
Dim counter As Integer
Una dichiarazione di variabili può anche includere un modificatore di accesso , come Public
, Protected
, Friend
o Private
. Questo funziona in congiunzione con l' ambito della variabile per determinarne l'accessibilità.
Modificatore d'accesso | Senso |
---|---|
Pubblico | Tutti i tipi che possono accedere al tipo di allegato |
protetta | Solo la classe che racchiude e quelli che ne ereditano |
Amico | Tutti i tipi nello stesso assembly che possono accedere al tipo di allegato |
Amico protetto | La classe di inclusione e i suoi ereditari, oi tipi nello stesso assembly che possono accedere alla classe che li include |
Privato | Solo il tipo di allegato |
Statico | Solo su variabili locali e si inizializza solo una volta. |
Come abbreviazione, la parola chiave Dim
può essere sostituita con il modificatore di accesso nella dichiarazione della variabile:
Public TotalItems As Integer
Private counter As Integer
I tipi di dati supportati sono descritti nella tabella seguente:
genere | Alias | Allocazione della memoria | Esempio |
---|---|---|---|
SByte | N / A | 1 byte | Dim example As SByte = 10 |
Int16 | Corto | 2 byte | Dim example As Short = 10 |
Int32 | Numero intero | 4 byte | Dim example As Integer = 10 |
Int64 | Lungo | 8 byte | Dim example As Long = 10 |
singolo | N / A | 4 byte | Dim example As Single = 10.95 |
Doppio | N / A | 8 byte | Dim example As Double = 10.95 |
Decimale | N / A | 16 byte | Dim example As Decimal = 10.95 |
booleano | N / A | Dettato implementando la piattaforma | Dim example As Boolean = True |
carbonizzare | N / A | 2 byte | Dim example As Char = "A"C |
Stringa | N / A | fonte | Dim example As String = "Stack Overflow" |
Appuntamento | Data | 8 byte | Dim example As Date = Date.Now |
Byte | N / A | 1 byte | Dim example As Byte = 10 |
UInt16 | USHORT | 2 byte | Dim example As UShort = 10 |
UInt32 | UInteger | 4 byte | Dim example As UInteger = 10 |
UInt64 | Ulong | 8 byte | Dim example As ULong = 10 |
Oggetto | N / A | 4 byte architettura a 32 bit, 8 byte architettura a 64 bit | Dim example As Object = Nothing |
Esistono anche identificatori di dati e caratteri di tipo letterale utilizzabili in sostituzione del tipo testuale o per forzare il tipo letterale:
Digitare (o pseudonimo) | Carattere del tipo di identificatore | Carattere di tipo letterale |
---|---|---|
Corto | N / A | example = 10S |
Numero intero | Dim example% | example = 10% o example = 10I |
Lungo | Dim example& | example = 10& o example = 10L |
singolo | Dim example! | example = 10! o example = 10F |
Doppio | Dim example# | example = 10# o example = 10R |
Decimale | Dim example@ | example = 10@ o example = 10D |
carbonizzare | N / A | example = "A"C |
Stringa | Dim example$ | N / A |
USHORT | N / A | example = 10US |
UInteger | N / A | example = 10UI |
Ulong | N / A | example = 10UL |
I suffissi integrali sono anche utilizzabili con prefissi esadecimali (& H) o ottali (& O):
example = &H8000S
o example = &O77&
Gli oggetti Date (Time) possono anche essere definiti usando la sintassi letterale:
Dim example As Date = #7/26/2016 12:8 PM#
Una volta che una variabile viene dichiarata esisterà entro la portata del tipo contenente, Sub
o Function
dichiarati, ad esempio:
Public Function IncrementCounter() As Integer
Dim counter As Integer = 0
counter += 1
Return counter
End Function
La variabile di conteggio esisterà solo fino alla End Function
e quindi sarà fuori portata. Se questa variabile contatore è necessaria al di fuori della funzione, sarà necessario definirla a livello di classe / struttura o modulo.
Public Class ExampleClass
Private _counter As Integer
Public Function IncrementCounter() As Integer
_counter += 1
Return _counter
End Function
End Class
In alternativa, è possibile utilizzare il modificatore Static
(da non confondere con Shared
) per consentire a una variabile locale di mantenere il valore tra le chiamate del relativo metodo di inclusione:
Function IncrementCounter() As Integer
Static counter As Integer = 0
counter += 1
Return counter
End Function
Livelli di dichiarazione - Variabili locali e membri
Variabili locali : quelle dichiarate all'interno di una procedura (subroutine o funzione) di una classe (o altra struttura). In questo esempio, exampleLocalVariable
è una variabile locale dichiarata all'interno di ExampleFunction()
:
Public Class ExampleClass1
Public Function ExampleFunction() As Integer
Dim exampleLocalVariable As Integer = 3
Return exampleLocalVariable
End Function
End Class
La parola chiave Static
consente di mantenere una variabile locale e di mantenerne il valore dopo la terminazione (dove solitamente le variabili locali cessano di esistere al termine della procedura di contenimento).
In questo esempio, la console è 024
. Su ogni chiamata a ExampleSub()
da Main()
la variabile statica mantiene il valore che aveva alla fine della precedente chiamata:
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
Variabili membro - Dichiarate al di fuori di qualsiasi procedura, a livello di classe (o altra struttura). Possono essere variabili di istanza , in cui ogni istanza della classe contenitore ha una propria copia distinta di tale variabile, o variabili Shared
, che esistono come una singola variabile associata alla classe stessa, indipendentemente da qualsiasi istanza.
Qui, ExampleClass2
contiene due variabili membro. Ogni istanza di ExampleClass2
ha una specifica ExampleInstanceVariable
cui è possibile accedere tramite il riferimento alla classe. È tuttavia possibile accedere alla variabile condivisa ExampleSharedVariable
utilizzando il nome della 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
Esempio di modificatori di accesso
Nell'esempio seguente, si consideri una soluzione che ospita due progetti: ConsoleApplication1 e SampleClassLibrary . Il primo progetto avrà le classi SampleClass1 e SampleClass2 . Il secondo avrà SampleClass3 e SampleClass4 . In altre parole, abbiamo due assembly con due classi ciascuno. ConsoleApplication1 ha un riferimento a SampleClassLibrary .
Guarda come SampleClass1.MethodA interagisce con altre classi e metodi.
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