Junior
Millistel eesmärkidel kasutatakse C#-s välja, millel on readonly-muutuja?
sobes.tech AI
Vastus AI-lt
C# keeles võib readonly modifikaatoriga märgitud väli olla initsialiseeritud ainult välja deklaratsiooni ajal või klassi konstruktoris. Pärast initsialiseerimist ei saa selle väärtust muuta.
Kasutamise eesmärgid:
- Muutumatuse tagamine: Tagab, et välja väärtus ei muutu juhuslikult pärast objekti loomist. See suurendab koodi usaldusväärsust ja lihtsustab silumist.
- Iga eksemplari jaoks konstantid: Erinevalt staatilistest konstantidest (
const) võivadreadonlyväljad omada erinevaid väärtusi erinevatel klassi eksemplaridel. - Initsialiseerimine konstruktoris: Annab võimaluse määrata välja lõplik väärtus konstruktoriloogika põhjal, mis pole võimalik
constväljade puhul (neid tuleb initsialiseerida literaali või konstantsena kompileerimise ajal). - Tõhususe parandamine struktuuridega töötamisel: Struktuuride puhul võivad
readonlyväljad parandada jõudlust, kuna kompilaator võib teha teatud optimeerimisi, teades, et väärtus ei muutu.
Näide:
public class MyClass
{
public readonly int ImmutableValue; // Võib olla initsialiseeritud siin või konstruktoris
public readonly string Name;
// Konstruktor `readonly` väljade väärtuste määramiseks
public MyClass(int value, string name)
{
ImmutableValue = value;
Name = name;
}
// See meetod põhjustab kompileerimisvea, kuna üritab muuta `readonly` välja
// public void TryChangeValue(int newValue)
// {
// ImmutableValue = newValue; // Kompileerimisviga
// }
}