TOC

This article is currently in the process of being translated into Dutch (~99% done).

Data types:

Impliciete variabelen (het var sleutelwoord)

Vanaf versie 3.0 van C# kan aan de linker zijde van de variabele declaratie het var sleutelwoord gebruikt worden in plaats van de expliciete declaratie van het type. Dit kan alleen in een methode, niet op klasseniveau, waar het type altijd moet gespecifieerd worden. Een voorbeeld van gebruik van het var sleutelwoord:

int age = 42; // Explicitly typed variable

var name = "John Doe"; // Implicitly typed variable

Twee variabelen: de ene gedeclareerd als int terwijl de andere gedeclareerd is als var in de plaats van string. Noteer dat in beide gevallen een waarde wordt toegekend, omdat, terwijl het niet vereist is bij declaratie van een type, het WEL vereist is bij declaratie van een var sleutelwoord. Dit omdat de C# compiler het type afleidt van het rechter deel van de instructie. Hij kijkt bij het compileren slechts naar wat men toekent aan de variabele en wijzigt dan pas het var sleutelwoord in het juiste type.

Dit betekent dat er geen overhead is bij gebruik van het var sleutelwoord. Het is even snel als bij runtime bij een expliciet toegekende variabele dank zij .NET.

Het eerste voorbeeld is eenvoudig omdat er niet veel tijd bespaard wordt door "var" te gebruiken in plaats van "string". Dikwijls worden er meer complexe types gebruikt, ofwel als een nieuwe variabele, ofwel als het lokale resultaat van een functie (gebruiker gedefinieerd ofwel van het framework). Er kan veel tijd typwerk gespaard worden in een voorbeeld als dit:

Dictionary<int, List<string>> dict1 = new Dictionary<int, List<string>>();

var dict2 = new Dictionary<int, List<string>>();

Het resultaat zal exact hetzelfde zijn maar in het tweede geval is er aanzienlijk minder typwerk nodig en daar in beide gevallen het type rechts wordt opgegeven, is er geen verlies van leesbaarheid bij gebruik van het var sleutelwoord.

Het var sleutelwoord kan ook gebruikt worden bij de declaratie van een lokale variabele als resultaat van de aanroep van een methode:

var s = DateTime.Now.ToString();

Ook hier weer is het sneller en duidelijk wat er gebeurt en welk type de variabele zal bevatten. In het volgende voorbeeld is dat anders:

var myVar = SomeMethodWithANameWhichDoesntIndicateTheReturnType();

Hier is het niet duidelijk wat de variabele zal bevatten en de leesbaarheid van de code. Hier zou een expliciete variabele op z'n plaats zijn.

Het var sleutelwoord & Anonymous Types

Tot hiertoe werd in de voorbeelden gebruik gemaakt van het var sleutelwoord op eenvoudige syntactische wijze: minder typewerk, maar niet echt nodig. Bij gebruik van anonymous (anonieme) types (later meer hierover) is het wel nuttig de objecten met het var sleutelwoord te declareren:

var myObj = new
{
    Name = "John Doe",
    Age = 42
};
Console.WriteLine(myObj.Name);

Hier is het var sleutelwoord echt nodig om later de velden van het anonieme type te benaderen zoals dit voorbeeld aantoont.

Samenvatting

Het var sleutelwoord laat toe een lokale variabele te declareren (in een methode of een lus) zonder het type expliciet op te geven. De C# compiler leidt het type af uit het rechter deel van de declaratie. Alhoewel dat gemakkelijk kan zijn in vele situaties, maakt het de code minder leesbaar. Men kan het wel of niet gebruiken maar bij anonieme types is het verplicht.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!