Junior
Do jakich celów używa się pól z modyfikatorem readonly w C#?
sobes.tech AI
Odpowiedź od AI
Pole z modyfikatorem readonly w C# może być inicjalizowane tylko w momencie deklaracji pola lub w konstruktorze klasy. Po inicjalizacji jego wartość nie może być zmieniona.
Cele użycia:
- Zapewnienie niezmienniczości: Gwarantuje, że wartość pola nie zostanie przypadkowo zmieniona po utworzeniu obiektu. To zwiększa niezawodność kodu i ułatwia debugowanie.
- Stałe dla każdego egzemplarza: W przeciwieństwie do statycznych stałych (
const), polareadonlymogą mieć różne wartości dla różnych egzemplarzy klasy. - Inicjalizacja w konstruktorze: Pozwala ustawić ostateczną wartość pola na podstawie logiki konstruktora, co jest niemożliwe dla pól
const(które muszą być inicjalizowane literałem lub stałą podczas kompilacji). - Zwiększenie wydajności przy pracy ze strukturami: Dla struktur, pola
readonlymogą poprawić wydajność, ponieważ kompilator może wykonywać pewne optymalizacje, wiedząc, że wartość się nie zmieni.
Przykład:
public class MyClass
{
public readonly int ImmutableValue; // Może być inicjalizowane tutaj lub w konstruktorze
public readonly string Name;
// Konstruktor do przypisywania wartości do pól readonly
public MyClass(int value, string name)
{
ImmutableValue = value;
Name = name;
}
// Ta metoda spowoduje błąd kompilacji, ponieważ próbuje zmienić pole readonly
// public void TryChangeValue(int newValue)
// {
// ImmutableValue = newValue; // Błąd kompilacji
// }
}