Sobes.tech
Junior

Zašto se koriste polja sa modifikatorom readonly u C#?

sobes.tech АИ

Одговор од АИ

Polje sa modifikatorom readonly u C# može biti inicijalizovano samo u trenutku deklaracije polja ili u konstruktoru klase. Nakon inicijalizacije, njegova vrednost ne može biti promenjena.

Ciljevi korišćenja:

  1. Obezbeđivanje nepromenljivosti: Garantuje da vrednost polja neće biti slučajno promenjena nakon kreiranja objekta. Ovo povećava pouzdanost koda i olakšava otklanjanje grešaka.
  2. Konstantne vrednosti za svaki primerak: Za razliku od statičkih konstanti (const), readonly polja mogu imati različite vrednosti za različite instance klase.
  3. Inicijalizacija u konstruktoru: Omogućava da se postavi konačna vrednost polja na osnovu logike konstruktora, što nije moguće za const polja (koja moraju biti inicijalizovana literalom ili konstantom tokom kompilacije).
  4. Poboljšanje performansi pri radu sa strukturama: Za strukture, readonly polja mogu poboljšati performanse, jer kompajler može da vrši određene optimizacije znajući da se vrednost neće menjati.

Primer:

public class MyClass
{
    public readonly int ImmutableValue; // Može biti inicijalizovano ovde ili u konstruktoru
    public readonly string Name;

    // Konstruktor za dodelu vrednosti readonly poljima
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Ova metoda će izazvati grešku pri kompilaciji, jer pokušava da menja readonly polje
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Greška pri kompilaciji
    // }
}