Const-Anweisung (Visual Basic)
Deklariert und definiert mindestens eine Konstante.
Syntax
[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist
Bestandteile
attributelist
Optional. Liste der Attribute, die für alle in dieser Anweisung deklarierten Konstanten gelten. Weitere Informationen finden Sie unter Attributliste in spitzen Klammern („<
“ und „>
“).
accessmodifier
Optional. Verwenden Sie diese Option, um anzugeben, welcher Code auf diese Konstanten zugreifen kann. Kann Public, Protected, Friend, Protected Friend, Private oder Private Protected sein.
Shadows
Optional. Verwenden Sie diese Option, um ein Programmierelement in einer Basisklasse neu zu definieren und auszublenden. Siehe Shadows.
constantlist
Erforderlich. Liste der Konstanten, die in dieser Anweisung deklariert werden.
constant
[ ,
constant
... ]
Jede constant
weist folgende Syntax und Bestandteile auf:
constantname
[ As
datatype
] =
initializer
Teil | Beschreibung |
---|---|
constantname |
Erforderlich. Der Name der Konstante. Siehe Declared Element Names. |
datatype |
Erforderlich, wenn Option Strict On ist. Der Datentyp der Konstante. |
initializer |
Erforderlich. Ausdruck, der zur Kompilierzeit ausgewertet und der Konstante zugewiesen wird. |
Bemerkungen
Wenn Sie über einen Wert verfügen, der sich in Ihrer Anwendung nie ändert, können Sie eine benannte Konstante definieren und diese anstelle eines Literalwerts verwenden. Einen Namen können Sie sich leichter merken als einen Wert. Sie können die Konstante nur ein Mal definieren und an vielen Stellen im Code verwenden. Wenn Sie in einer höheren Version den Wert neu definieren müssen, ist die Const
-Anweisung die einzige Stelle, an dem Sie eine Änderung vornehmen müssen.
Sie können Const
nur auf Modul- oder Prozedurebene verwenden. Das bedeutet, dass der Deklarationskontext für eine Variable eine Klasse, eine Struktur, ein Modul, eine Prozedur oder ein Block sein muss und keine Quelldatei, kein Namespace und keine Schnittstelle sein darf. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.
Lokale Konstanten (innerhalb einer Prozedur) besitzen standardmäßig öffentlichen Zugriff, und Sie können keine Zugriffsmodifizierer auf sie anwenden. Klassen- und Modulmembervariablen (außerhalb einer Prozedur) verwenden standardmäßig privaten Zugriff, Strukturmemberkonstanten standardmäßig öffentlichen Zugriff. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen.
Regeln
Deklarationskontext. Eine Konstante, die auf Modulebene außerhalb einer Prozedur deklariert wird, ist eine Memberkonstante. Sie ist ein Member der Klasse, der Struktur oder des Moduls, die bzw. das sie deklariert.
Eine auf Prozedurebene deklarierte Konstante ist eine lokale Konstante. Sie ist lokal für die Prozedur oder den Block, die bzw. der sie deklariert.
Attribute Sie können Attribute nur auf Memberkonstanten anwenden, nicht auf lokale Konstanten. Ein Attribut trägt Informationen zu den Metadaten der Assembly bei, was für temporären Speicher wie lokale Konstanten nicht sinnvoll ist.
Modifizierer. Standardmäßig sind alle Konstanten
Shared
,Static
undReadOnly
. Sie können keines dieser Schlüsselwörter verwenden, wenn Sie eine Konstante deklarieren.Auf Prozedurebene können Sie weder
Shadows
noch irgendwelche Zugriffsmodifizierer verwenden, um lokale Konstanten zu deklarieren.Mehrere Konstanten. Sie können mehrere Konstanten in derselben Deklarationsanweisung deklarieren und dabei den
constantname
-Teil für jede Konstante angeben. Mehrere Argumente werden durch Kommas voneinander getrennt.
Datentypregeln
Datentypen: Die
Const
-Anweisung kann den Datentyp einer Variablen deklarieren. Sie können einen beliebigen Datentyp oder den Namen einer Enumeration angeben.Der Standardtyp. Wenn Sie
datatype
nicht angeben, nimmt die Konstante den Datentypinitializer
an. Wenn Sie sowohl alsdatatype
auchinitializer
angeben, muss der Datentyp voninitializer
indatatype
konvertierbar sein. Wenn wederdatatype
nochinitializer
vorhanden ist, ist der Datentyp standardmäßig aufObject
festgelegt.Verschiedene Typen. Sie können unterschiedliche Datentypen für verschiedene Konstanten angeben, indem Sie eine separate
As
-Klausel für jede deklarierte Variable verwenden. Sie können jedoch nicht mehrere Konstanten mit einer allgemeinenAs
-Klausel als gleichen Typ deklarieren.Initialisierung. Sie müssen den Wert jeder Konstanten in
constantlist
initialisieren. Sie verwendeninitializer
, um einen Ausdruck anzugeben, der der Konstanten zugewiesen werden soll. Der Ausdruck kann eine beliebige Kombination aus Literalen, anderen bereits definierten Konstanten und bereits definierten Enumerationsmembern sein. Sie können arithmetische und logische Operatoren verwenden, um solche Elemente zu kombinieren.Sie können in keine Variablen oder Funktionen
initializer
verwenden. Sie können jedoch Konvertierungsstichwörter wieCByte
undCShort
verwenden. Sie können auchAscW
verwenden, wenn Sie das Element mit einer KonstanteString
oder einemChar
-Argument aufrufen, da dies zur Kompilierzeit ausgewertet werden kann.
Verhalten
Umfang. Auf lokale Konstanten kann nur innerhalb ihrer Prozedur oder ihres Blocks zugegriffen werden. Auf Memberkonstanten kann von überall innerhalb ihrer Klasse, ihrer Struktur oder ihres Moduls zugegriffen werden.
Qualifikation. Code außerhalb einer Klasse, einer Struktur oder eines Moduls muss den Namen einer Membervariablen mit dem Namen dieser Klasse bzw. der Struktur oder des Moduls qualifizieren. Code außerhalb einer Prozedur oder eines Blocks kann nicht auf lokale Variablen innerhalb dieser Prozedur oder dieses Blocks verweisen.
Beispiel 1
Im folgenden Beispiel wird die Const
-Anweisung verwendet, um die Verwendung von Konstanten anstelle von Literalwerten zu deklarieren.
' The following statements declare constants.
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5
Beispiel 2
Wenn Sie eine Konstante mit dem Datentyp Object
definieren, weist ihr der Visual Basic-Compiler den Typ initializer
anstelle von Object
zu. Im folgenden Beispiel weist die Konstante naturalLogBase
den Laufzeittyp Decimal
auf.
Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " &
naturalLogBase.GetType.ToString())
Im vorherigen Beispiel wird die ToString-Methode für das Type-Objekt verwendet, das vom GetType-Operator zurückgegeben wird, weil Type nicht in String
mit CStr
konvertiert werden kann.