Suche…


Syntax

  • Öffentlicher Zähler als Integer
  • Privater _counter als ganze Zahl
  • Dim-Zähler als Ganzzahl

Eine Variable mit einem primitiven Typ deklarieren und zuweisen

Variablen in Visual Basic werden mit dem Schlüsselwort Dim deklariert. Dies deklariert beispielsweise eine neue Variable namens counter mit dem Datentyp Integer :

Dim counter As Integer

Eine Variablendeklaration kann auch einen Zugriffsmodifizierer enthalten , z. B. " Public , " Protected , " Friend oder " Private . Dies hängt mit dem Gültigkeitsbereich der Variablen zusammen, um die Erreichbarkeit zu bestimmen.

Zugriffsmodifizierer Bedeutung
Öffentlichkeit Alle Typen, die auf den umgebenden Typ zugreifen können
Geschützt Nur die umgebende Klasse und die, die davon erben
Freund Alle Typen in derselben Assembly, die auf den umschließenden Typ zugreifen können
Geschützter Freund Die umgebende Klasse und ihre Vererbung oder die Typen in derselben Assembly, die auf die umgebende Klasse zugreifen können
Privatgelände Nur der umschließende Typ
Statisch Nur bei lokalen Variablen und nur einmal initialisiert.

Das Kürzel Dim kann in der Deklaration der Variablen durch den Zugriffsmodifizierer ersetzt werden:

Public TotalItems As Integer
Private counter As Integer

Die unterstützten Datentypen sind in der folgenden Tabelle aufgeführt:

Art Alias Speicherzuweisung Beispiel
SByte N / A 1 Byte Dim example As SByte = 10
Int16 Kurz 2 Bytes Dim example As Short = 10
Int32 Ganze Zahl 4 Bytes Dim example As Integer = 10
Int64 Lange 8 Bytes Dim example As Long = 10
Single N / A 4 Bytes Dim example As Single = 10.95
Doppelt N / A 8 Bytes Dim example As Double = 10.95
Dezimal N / A 16 Bytes Dim example As Decimal = 10.95
Boolean N / A Durch Implementierung der Plattform vorgegeben Dim example As Boolean = True
Verkohlen N / A 2 Bytes Dim example As Char = "A"C
String N / A Formel Quelle Dim example As String = "Stack Overflow"
Terminzeit 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
Objekt N / A 4 Byte 32 Bit Architektur, 8 Byte 64 Bit Architektur Dim example As Object = Nothing

Es gibt auch Datenbezeichner- und Literaltyp-Zeichen, die als Ersatz für den Texttyp und oder zum Erzwingen eines Literaltyps verwendet werden können:

Typ (oder Alias) Kennungstypzeichen Buchstabendes Zeichen
Kurz N / A example = 10S
Ganze Zahl Dim example% example = 10% oder example = 10I
Lange Dim example& example = 10& oder example = 10L
Single Dim example! example = 10! oder example = 10F
Doppelt Dim example# example = 10# oder example = 10R
Dezimal Dim example@ example = 10@ oder example = 10D
Verkohlen N / A example = "A"C
String Dim example$ N / A
UShort N / A example = 10US
UInteger N / A example = 10UI
ULong N / A example = 10UL

Die Integralsuffixe können auch mit hexadezimalen (& H) oder oktalen (& O) Präfixen verwendet werden:
example = &H8000S oder example = &O77&

Date (Time) -Objekte können auch mit der Literal-Syntax definiert werden:
Dim example As Date = #7/26/2016 12:8 PM#

Sobald eine Variable deklariert ist, ist sie im Gültigkeitsbereich des enthaltenen Typs, Sub oder Function deklariert. Beispiel:

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

    Return counter
End Function

Die Zählervariable existiert nur bis zur End Function und ist dann außerhalb des Gültigkeitsbereichs. Wenn diese Zählervariable außerhalb der Funktion benötigt wird, müssen Sie sie auf Klassen- / Struktur- oder Modulebene definieren.

Public Class ExampleClass

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

End Class

Alternativ können Sie den Static (nicht mit Shared zu verwechseln) Modifikator verwenden, um zuzulassen, dass eine lokale Variable ihren Wert zwischen Aufrufen ihrer einschließenden Methode behält:

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

    Return counter
End Function

Deklarationsebenen - Lokale und Member-Variablen

Lokale Variablen - Die innerhalb einer Prozedur (Unterprogramm oder Funktion) einer Klasse (oder einer anderen Struktur) deklarierten Variablen . In diesem Beispiel ist exampleLocalVariable eine lokale Variable, die in ExampleFunction() exampleLocalVariable ist:

Public Class ExampleClass1

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

End Class

Das Schlüsselwort Static ermöglicht die Beibehaltung einer lokalen Variablen und deren Beibehaltung des Werts nach der Beendigung. Normalerweise werden lokale Variablen nicht mehr angezeigt, wenn die enthaltende Prozedur beendet wird.

In diesem Beispiel ist die Konsole 024 . Bei jedem Aufruf von ExampleSub() von Main() behält die statische Variable den Wert bei, den sie am Ende des vorherigen Aufrufs hatte:

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

Member-Variablen - Wird außerhalb eines Verfahrens auf Klassen- oder anderer Strukturebene deklariert. Dies können Instanzvariablen sein , bei denen jede Instanz der enthaltenden Klasse über eine eigene Kopie dieser Variablen verfügt, oder Shared Variablen , die als einzelne, der Klasse selbst zugeordnete Variable unabhängig von jeder Instanz existieren.

Hier enthält ExampleClass2 zwei ExampleClass2 . Jede Instanz der ExampleClass2 verfügt über eine eigene ExampleInstanceVariable die über die Klassenreferenz zugegriffen werden kann. Auf die gemeinsam genutzte Variable ExampleSharedVariable jedoch unter Verwendung des Klassennamens zugegriffen:

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

Beispiel für Zugriffsmodifizierer

Stellen Sie sich im folgenden Beispiel vor, Sie haben eine Lösung, die zwei Projekte hostet : ConsoleApplication1 und SampleClassLibrary . Das erste Projekt enthält die Klassen SampleClass1 und SampleClass2 . Die zweite enthält SampleClass3 und SampleClass4 . Mit anderen Worten, wir haben zwei Baugruppen mit jeweils zwei Klassen. ConsoleApplication1 enthält eine Referenz auf SampleClassLibrary .

Sehen Sie, wie SampleClass1.MethodA mit anderen Klassen und Methoden interagiert.

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow