Zoeken…


Syntaxis

  • Publieke teller als geheel getal
  • Privé _teller als geheel getal
  • Dim teller Als geheel getal

Een variabele declareren en toewijzen met een primitief type

Variabelen in Visual Basic worden gedeclareerd met het trefwoord Dim . Dit declareert bijvoorbeeld een nieuwe variabele met de naam counter met het gegevenstype Integer :

Dim counter As Integer

Een variabele declaratie kan ook een toegangsmodificator bevatten , zoals Public , Protected , Friend of Private . Dit werkt samen met het bereik van de variabele om de toegankelijkheid ervan te bepalen.

Toegang Modifier Betekenis
Openbaar Alle typen die toegang hebben tot het omhullende type
beschermde Alleen de insluitende klasse en degenen die ervan erven
vriend Alle typen in hetzelfde merk die toegang hebben tot het omhullende type
Beschermde vriend De omsluitende klasse en de bijbehorende erfgenamen, of de typen in dezelfde assembly die toegang hebben tot de omsluitende klasse
Privaat Alleen het omhullende type
Statisch Alleen op lokale variabelen en initialiseert slechts eenmaal.

Als afkorting kan het trefwoord Dim worden vervangen door de toegangsmodificator in de verklaring van de variabele:

Public TotalItems As Integer
Private counter As Integer

De ondersteunde gegevenstypen staan in de onderstaande tabel:

Type Alias Geheugentoewijzing Voorbeeld
SByte N / A 1 byte Dim example As SByte = 10
Int16 kort 2 bytes Dim example As Short = 10
Int32 Geheel getal 4 bytes Dim example As Integer = 10
Int64 Lang 8 bytes Dim example As Long = 10
single N / A 4 bytes Dim example As Single = 10.95
Dubbele N / A 8 bytes Dim example As Double = 10.95
Decimale N / A 16 bytes Dim example As Decimal = 10.95
Boolean N / A Gedicteerd door implementatie van platform Dim example As Boolean = True
verkolen N / A 2 bytes Dim example As Char = "A"C
Draad N / A formule bron Dim example As String = "Stack Overflow"
Datum Tijd Datum 8 bytes Dim example As Date = Date.Now
Byte N / A 1 byte Dim example As Byte = 10
uint16 UShort 2 bytes Dim example As UShort = 10
UInt32 UInteger 4 bytes Dim example As UInteger = 10
UInt64 Ulong 8 bytes Dim example As ULong = 10
Voorwerp N / A 4 bytes 32 bit architectuur, 8 bytes 64 bit architectuur Dim example As Object = Nothing

Er bestaan ook gegevens-ID en lettertype tekens die kunnen worden gebruikt ter vervanging van het teksttype en of om het lettertype te forceren:

Type (of Alias) Type identificatiekenmerk Letterlijk type karakter
kort N / A example = 10S
Geheel getal Dim example% example = 10% of example = 10I
Lang Dim example& example = 10& of example = 10L
single Dim example! example = 10! of example = 10F
Dubbele Dim example# example = 10# of example = 10R
Decimale Dim example@ example = 10@ of example = 10D
verkolen N / A example = "A"C
Draad Dim example$ N / A
UShort N / A example = 10US
UInteger N / A example = 10UI
Ulong N / A example = 10UL

De integrale achtervoegsels kunnen ook worden gebruikt met hexadecimale (& H) of octale (& O) voorvoegsels:
example = &H8000S of example = &O77&

Datum (tijd) -objecten kunnen ook worden gedefinieerd met behulp van letterlijke syntaxis:
Dim example As Date = #7/26/2016 12:8 PM#

Als een variabele eenmaal is gedeclareerd, bestaat deze binnen het bereik van het opgegeven type, Sub of Function als voorbeeld:

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

    Return counter
End Function

De tellervariabele bestaat alleen tot de End Function en valt dan buiten het bereik. Als deze tellervariabele buiten de functie nodig is, moet u deze op klasse- / structuur- of moduleniveau definiëren.

Public Class ExampleClass

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

End Class

Als alternatief kunt u de Static (niet te verwarren met Shared ) modifier gebruiken om een lokale variabele zijn waarde te laten behouden tussen aanroepen van de bijbehorende methode:

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

    Return counter
End Function

Declaratieniveaus - lokale en lidvariabelen

Lokale variabelen - Degenen die binnen een procedure (subroutine of functie) van een klasse (of andere structuur) zijn gedeclareerd. In dit voorbeeld is exampleLocalVariable een lokale variabele die is gedeclareerd in ExampleFunction() :

Public Class ExampleClass1

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

End Class

Met het Static trefwoord kan een lokale variabele worden behouden en na beëindiging zijn waarde behouden (waar meestal lokale variabelen niet meer bestaan wanneer de bevattende procedure wordt beëindigd).

In dit voorbeeld is de console 024 . Bij elke aanroep van ExampleSub() van Main() behoudt de statische variabele de waarde die deze had aan het einde van de vorige aanroep:

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

Lidvariabelen - Aangegeven buiten een procedure, op het niveau van de klasse (of andere structuur). Dit kunnen instantievariabelen zijn , waarbij elke instantie van de bevattende klasse een eigen, afzonderlijke kopie van die variabele heeft, of Shared variabelen , die bestaan als een enkele variabele die aan de klasse zelf is gekoppeld, onafhankelijk van elke instantie.

Hier bevat ExampleClass2 twee lidvariabelen. Elke instantie van de ExampleClass2 heeft een individuele ExampleInstanceVariable die toegankelijk is via de klassenreferentie. De gedeelde variabele ExampleSharedVariable echter toegankelijk met de klassenaam:

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

Voorbeeld van toegangsmodificaties

Beschouw in het volgende voorbeeld een oplossing voor twee projecten: ConsoleApplication1 en SampleClassLibrary . Het eerste project heeft de klassen SampleClass1 en SampleClass2 . De tweede heeft SampleClass3 en SampleClass4 . Met andere woorden, we hebben twee samenstellingen met elk twee klassen. ConsoleApplication1 heeft een verwijzing naar SampleClassLibrary .

Bekijk hoe SampleClass1.MethodA samenwerkt met andere klassen en methoden.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow