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:
- 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.
- Konstanten für jede Instanz: Im Gegensatz zu statischen Konstanten (
const) könnenreadonly-Felder unterschiedliche Werte für verschiedene Instanzen der Klasse haben. - 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. - 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
// }
}