Sobes.tech
Junior

Wofür werden Felder mit dem Modifikator readonly in C# verwendet?

sobes.tech KI

Antwort von AI

Ein Feld mit dem Modifikator readonly in C# kann nur beim Deklarieren des Feldes oder im Konstruktor der Klasse initialisiert werden. Nach der Initialisierung kann sein Wert nicht mehr geändert werden.

Verwendungszwecke:

  1. Sicherstellung der Unveränderlichkeit: Gewährleistet, dass der Wert des Feldes nach der Objekterstellung nicht versehentlich geändert wird. Dies erhöht die Zuverlässigkeit des Codes und erleichtert das Debuggen.
  2. Konstanten für jede Instanz: Im Gegensatz zu statischen Konstanten (const) können readonly-Felder unterschiedliche Werte für verschiedene Instanzen der Klasse haben.
  3. Initialisierung im Konstruktor: Ermöglicht es, einen endgültigen Wert für das Feld basierend auf der Logik des Konstruktors festzulegen, was bei const-Feldern (die während der Kompilierung mit Literal oder Konstante initialisiert werden müssen) nicht möglich ist.
  4. Leistungsverbesserung bei der Arbeit mit Strukturen: Für Strukturen können readonly-Felder die Leistung verbessern, da der Compiler bestimmte Optimierungen vornehmen kann, wenn er weiß, dass sich der Wert nicht ändert.

Beispiel:

public class MyClass
{
    public readonly int ImmutableValue; // Kann hier oder im Konstruktor initialisiert werden
    public readonly string Name;

    // Konstruktor zum Zuweisen von Werten an readonly-Felder
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Diese Methode führt zu einem Kompilierungsfehler, da sie versucht, ein readonly-Feld zu ändern
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Kompilierungsfehler
    // }
}