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 formula 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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow