Visual Basic .NET Language
Variablen deklarieren
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 | 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