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 StrictOn 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 und ReadOnly. 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 Datentyp initializer an. Wenn Sie sowohl als datatype auch initializer angeben, muss der Datentyp von initializer in datatype konvertierbar sein. Wenn weder datatype noch initializer vorhanden ist, ist der Datentyp standardmäßig auf Object 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 allgemeinen As-Klausel als gleichen Typ deklarieren.

  • Initialisierung. Sie müssen den Wert jeder Konstanten in constantlist initialisieren. Sie verwenden initializer, 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 initializerverwenden. Sie können jedoch Konvertierungsstichwörter wie CByte und CShortverwenden. Sie können auch AscW verwenden, wenn Sie das Element mit einer Konstante String oder einem Char-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.

Siehe auch