Sobes.tech
Junior

Voor welke doeleinden worden velden met de readonly-modifier in C# gebruikt?

sobes.tech AI

Antwoord van AI

Een veld met de modifier readonly in C# kan alleen worden geïnitialiseerd op het moment van de declaratie van het veld of in de constructor van de klasse. Na initialisatie kan de waarde niet worden gewijzigd.

Gebruik doelen:

  1. Zorg voor onveranderlijkheid: Garandeert dat de waarde van het veld niet per ongeluk wordt gewijzigd na het maken van het object. Dit verhoogt de betrouwbaarheid van de code en maakt debugging eenvoudiger.
  2. Constanten voor elk exemplaar: In tegenstelling tot statische constanten (const) kunnen readonly-velden verschillende waarden hebben voor verschillende instanties van de klasse.
  3. Initialisatie in de constructor: Maakt het mogelijk om een definitieve waarde voor het veld in te stellen op basis van de logica van de constructor, wat niet mogelijk is voor const-velden (die tijdens compilatie met een literaal of constante moeten worden geïnitialiseerd).
  4. Verbetering van de prestaties bij werken met structuren: Voor structuren kunnen readonly-velden de prestaties verbeteren, omdat de compiler bepaalde optimalisaties kan uitvoeren, wetende dat de waarde niet zal veranderen.

Voorbeeld:

public class MyClass
{
    public readonly int ImmutableValue; // Kan hier of in de constructor worden geïnitialiseerd
    public readonly string Name;

    // Constructor om waarden toe te wijzen aan readonly-velden
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Deze methode veroorzaakt een compilatiefout omdat hij probeert een readonly-veld te wijzigen
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Fout tijdens compilatie
    // }
}