Wat zijn properties?

Een property in C# is een eigenschap van een class dat toegang biedt tot een private field via getters en setters. Properties worden gebruikt om gecontroleerde toegang tot gegevens te bieden, zodat je bijvoorbeeld validatie of logging kunt toevoegen bij het ophalen of instellen van waarden. Ze lijken op fields, maar bieden meer controle en flexibiliteit.

Casus

Stel je hebt een mok. Deze mok heeft bepaalde eigenschappen zoals een kleur, hoeveel er in kan en een temperatuur. Je kan vervolgens vragen ‘welke kleur heeft de mok?’ om dit te weten te komen, of je kan hem verven om het aan te passen.

Hoe zitten properties in elkaar?

Een property bestaat uit een aantal onderdelen. Het moet een bijpassende naam hebben, en daarnaast getters en setters met bijhorende access modifiers. Hierdoor is het namelijk mogelijk om te bepalen waar de property aangepast/opgehaald kan worden. Daarnaast moet er een private field zijn waar de property naar verwijst. Als alternatief is het ook nog mogelijk om een property read/write only te maken door de getter of setter weg te laten bij de declaratie.

Bij de setter kan validatie gestopt worden op de data. Hierdoor zal de property altijd een verwachte waarde hebben.

Codevoorbeeld

private int leeftijd;  // Private field
public int Leeftijd  // Volledig geimplementeerde Property met datavalidatie
{  
    get  
    {  
        return leeftijd;  
    }  
    set  
    {   
		if(value < 0) leeftijd = 0;  
        else leeftijd = value;  
    }
}  
 
public string Naam { get; set; }  // Auto geimplementeerde Property
 
public string OogKleur { get; } = "Blauw"; // Auto geimplementeerde Property zonder setter

Hoe gebruik je properties?

Properties worden gebruikt wanneer je gecontroleerde toegang wilt tot de gegevens van een object. In plaats van direct een variabele aan te passen, biedt een property een veilige manier om gegevens te lezen en te wijzigen. Dit maakt het mogelijk om extra logica toe te voegen, zoals validatie of het automatisch bijwerken van andere waarden.

In plaats van het gebruik van properties zijn er ook nog een aantal alternatieven:

  • Getter & Setter Methods: In sommige programeer talen is dit meer standaard om te doen, maar in C# wordt dit gezien als minder elegant en minder overzichtelijk.
  • Public Fields: Op deze manier kunnen de fields direct aangesproken worden, maar dit zorgt er voor dat de controle het gebruik van de fields weg valt.

Casus

Stel je maakt een applicatie voor een slimme thermostaat. Deze thermostaat heeft een property Temperatuur die je kan instellen, maar deze temperatuur moet altijd binnen twee getallen blijven. Als de waarde niet valide is, dan wordt de nieuwe waarde niet toegewezen.

Mogelijke uitwerking van de casus

public class SlimmeThermostaat 
{ 
	private int temperatuur; // Privé-veld 
	public int Temperatuur { 
		get { return temperatuur; } // Getter 
		set 
		{ 
			if (value >= 10 && value <= 30) // Controleer geldige temperatuur 
			{ 
				temperatuur = value; 
				Console.WriteLine($"Temperatuur ingesteld op {temperatuur}°C."); 
			} 
			else { 
				Console.WriteLine("Ongeldige temperatuur! Kies een waarde tussen 10°C en 30°C."); 
			} 
		} 
	} 
	public SlimmeThermostaat(int startTemperatuur) { 
		Temperatuur = startTemperatuur; 
	} 
}

Volgende stap: Oefeningen properties