Delen via


Const-instructie (Visual Basic)

Declareert en definieert een of meer constanten.

Syntaxis

[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist

generator

attributelist
Optioneel. Lijst met kenmerken die van toepassing zijn op alle constanten die in deze instructie zijn gedeclareerd. Zie Lijst met kenmerken tussen punthaken ('<' en ''>).

accessmodifier
Optioneel. Gebruik deze optie om op te geven welke code toegang heeft tot deze constanten. Kan openbaar, beveiligd, vriend, beveiligde vriend, privé of privé beveiligd zijn.

Shadows
Optioneel. Gebruik dit om een programmeerelement opnieuw te declareren en te verbergen in een basisklasse. Zie schaduwen.

constantlist
Vereist. Lijst met constanten die in deze instructie worden gedeclareerd.

constant [ , constant ... ]

Elk constant heeft de volgende syntaxis en onderdelen:

constantname [ As datatype ] = initializer

Onderdeel Beschrijving
constantname Vereist. Naam van de constante. Zie Gedeclareerde elementnamen.
datatype Vereist als Option Strict dat het is On. Gegevenstype van de constante.
initializer Vereist. Expressie die wordt geëvalueerd tijdens het compileren en toegewezen aan de constante.

Opmerkingen

Als u een waarde hebt die nooit verandert in uw toepassing, kunt u een benoemde constante definiëren en deze gebruiken in plaats van een letterlijke waarde. Een naam is gemakkelijker te onthouden dan een waarde. U kunt de constante slechts eenmaal definiëren en op veel plaatsen in uw code gebruiken. Als u in een latere versie de waarde opnieuw moet definiëren, is de Const instructie de enige plaats waar u een wijziging moet aanbrengen.

U kunt alleen op module- of procedureniveau gebruiken Const . Dit betekent dat de declaratiecontext voor een variabele een klasse, structuur, module, procedure of blok moet zijn en geen bronbestand, naamruimte of interface kan zijn. Zie Declaratiecontexten en standaardtoegangsniveaus voor meer informatie.

Lokale constanten (binnen een procedure) zijn standaard ingesteld op openbare toegang en u kunt geen toegangsaanpassingen gebruiken. Klasse- en modulelidconstanten (buiten elke procedure) worden standaard ingesteld op privétoegang en structuurlidconstanten zijn standaard ingesteld op openbare toegang. U kunt hun toegangsniveaus aanpassen met de toegangsaanpassingen.

Regels

  • Declaratiecontext. Een constante die buiten elke procedure op moduleniveau is gedeclareerd, is een lidconstante; het is lid van de klasse, structuur of module die deze declareert.

    Een constante die op procedureniveau is gedeclareerd, is een lokale constante; deze is lokaal voor de procedure of het blok dat deze declareert.

  • Kenmerken. U kunt kenmerken alleen toepassen op lidconstanten, niet op lokale constanten. Een kenmerk draagt informatie bij aan de metagegevens van de assembly, wat niet zinvol is voor tijdelijke opslag, zoals lokale constanten.

  • Modifiers. Standaard zijn Sharedalle constanten , Staticen ReadOnly. U kunt geen van deze trefwoorden gebruiken bij het declareren van een constante.

    Op procedureniveau kunt u geen toegangsaanpassingen gebruiken Shadows om lokale constanten te declareren.

  • Meerdere constanten. U kunt verschillende constanten declareren in dezelfde declaratie-instructie, waarbij u het constantname gedeelte voor elke declaratie opgeeft. Meerdere constanten worden gescheiden door komma's.

Regels voor gegevenstypen

  • Gegevenstypen. De Const instructie kan het gegevenstype van een variabele declareren. U kunt elk gegevenstype of de naam van een opsomming opgeven.

  • Standaardtype. Als u dit niet opgeeftdatatype, neemt de constante het gegevenstype .initializer Als u beide datatype opgeeft en initializer, het gegevenstype van initializer moet converteerbaar zijn naar datatype. Als geen van initializer beide aanwezig datatype is, wordt het gegevenstype standaard ingesteld op Object.

  • Verschillende typen. U kunt verschillende gegevenstypen voor verschillende constanten opgeven met behulp van een afzonderlijke As component voor elke variabele die u declareert. U kunt echter niet meerdere constanten van hetzelfde type declareren met behulp van een gemeenschappelijke As component.

  • Initialisatie. U moet de waarde van elke constante in constantlistinitialiseren. U gebruikt initializer om een expressie op te geven die aan de constante moet worden toegewezen. De expressie kan elke combinatie zijn van letterlijke elementen, andere constanten die al zijn gedefinieerd en opsommingsleden die al zijn gedefinieerd. U kunt rekenkundige en logische operatoren gebruiken om dergelijke elementen te combineren.

    U kunt geen variabelen of functies gebruiken in initializer. U kunt echter conversietrefwoorden zoals CByte en CShort. U kunt het ook gebruiken AscW als u het aanroept met een constante String of Char argument, omdat dat tijdens het compileren kan worden geëvalueerd.

Gedrag

  • Reikwijdte. Lokale constanten zijn alleen toegankelijk vanuit hun procedure of blok. Lidconstanten zijn overal binnen hun klasse, structuur of module toegankelijk.

  • Kwalificatie. Code buiten een klasse, structuur of module moet de naam van een lidconstante kwalificeren met de naam van die klasse, structuur of module. Code buiten een procedure of blok kan niet verwijzen naar lokale constanten binnen die procedure of blok.

Voorbeeld 1

In het volgende voorbeeld wordt de Const instructie gebruikt om constanten te declareren voor gebruik in plaats van letterlijke waarden.

' The following statements declare constants.
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5

Voorbeeld 2

Als u een constante definieert met het gegevenstypeObject, geeft de Visual Basic-compiler het type , in plaats van initializerObject. In het volgende voorbeeld heeft de constante naturalLogBase het runtimetype Decimal.

Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " &
    naturalLogBase.GetType.ToString())

In het voorgaande voorbeeld wordt de ToString methode gebruikt voor het Type object dat wordt geretourneerd door de GetType-operator, omdat Type deze niet kan worden geconverteerd naar String .CStr

Zie ook