Impliciet getypte lokale variabelen declareren

Voltooid

De C#-compiler werkt achter de schermen om u te helpen bij het schrijven van uw code. De compiler kan het gegevenstypen van uw variabelen afleiden op basis van de geïnitialiseerde waarde. In deze les komt u meer te weten over deze functie met de naam Impliciet getypeerde lokale variabele.

Wat zijn impliciet getypeerde lokale variabelen?

Een impliciet getypte lokale variabele wordt gemaakt met behulp van het var trefwoord gevolgd door een variabele initialisatie. Voorbeeld:

var message = "Hello world!";

In dit voorbeeld is een tekenreeksvariabele gemaakt met behulp van het var trefwoord in plaats van het string trefwoord.

Het var trefwoord vertelt de C#-compiler dat het gegevenstype wordt geïmpliceerd door de toegewezen waarde. Nadat het type is geïmpliceerd, werkt de variabele hetzelfde als als het werkelijke gegevenstype is gebruikt om het te declareren. Het var trefwoord wordt gebruikt om toetsaanslagen op te slaan wanneer typen lang zijn of wanneer het type duidelijk is uit de context.

In het voorbeeld:

var message = "Hello world!";

Omdat de variabele message onmiddellijk is ingesteld op de string waarde "Hello World!", begrijpt de C#-compiler de intentie en behandelt elke instantie van message het type string.

In feite wordt de message variabele getypt als een string en kan nooit worden gewijzigd. Denk bijvoorbeeld aan de volgende code:

var message = "Hello World!";
message = 10.703m;

Wanneer u deze code uitvoert, wordt het volgende foutbericht weergegeven.

(2,11): error CS0029: Cannot implicitly convert type 'decimal' to 'string'

Notitie

Andere programmeertalen gebruiken het var-sleutelwoord anders. In C# krijgen variabelen een type toegewezen door de compiler, ongeacht of u de werkelijke naam van het gegevenstype gebruikt of dat de compiler het gegevenstype kan impliceren. Met andere woorden: het type wordt op het moment van de declaratie vergrendeld en kan daarom nooit waarden van een ander gegevenstype bevatten.

Variabelen die het var trefwoord gebruiken, moeten worden geïnitialiseerd

Het is belangrijk om te weten dat het var-sleutelwoord afhankelijk is van de waarde die u gebruikt om de variabele te initialiseren. Als u het var-sleutelwoord probeert te gebruiken zonder de variabele te initialiseren, ontvangt u een foutbericht wanneer u de code probeert te compileren.

var message;

Als u deze code probeert uit te voeren terwijl deze wordt gecompileerd, ziet u de volgende uitvoer:

(1,5): error CS0818: Implicitly-typed variables must be initialized

Waarom moet u het var-sleutelwoord gebruiken?

Het var trefwoord is veel gebruikt in de C#-community. Het is waarschijnlijk dat als u een codevoorbeeld in een boek of online bekijkt, u het var trefwoord ziet dat wordt gebruikt in plaats van de werkelijke naam van het gegevenstype, dus het is belangrijk om het gebruik ervan te begrijpen.

Het var trefwoord heeft een belangrijk gebruik in C#. Vaak is het type variabele duidelijk van de initialisatie. In die gevallen is het eenvoudiger om het var trefwoord te gebruiken. Het var trefwoord kan ook handig zijn bij het plannen van de code voor een toepassing. Wanneer u begint met het ontwikkelen van code voor een taak, weet u mogelijk niet direct welk gegevenstype u moet gebruiken. Het gebruik var kan u helpen uw oplossing dynamisch te ontwikkelen.

Wanneer u aan de slag gaat, is het raadzaam om de werkelijke naam van het gegevenstype te blijven gebruiken wanneer u variabelen declareert totdat u vertrouwd raakt met het werken met code. Wanneer u het gegevenstype gebruikt bij het declareren van variabelen, kunt u doelgericht werken bij het schrijven van de code.

Samenvatting

Dit is wat u tot nu toe hebt geleerd over het var trefwoord:

  • Met het var-sleutelwoord wordt aan de compiler aangegeven dat het gegevenstype moet worden afgeleid van de variabele op basis van de waarde waarop deze is geïnitialiseerd.
  • Waarschijnlijk ziet u het var trefwoord terwijl u de code van anderen leest. U moet echter het gegevenstype gebruiken wanneer dat mogelijk is.