Junior
Kādiem mērķiem tiek izmantoti lauki ar readonly modifikatoru C#?
sobes.tech AI
Atbilde no AI
C# valodā lauks ar modifikatoru readonly var tikt inicializēts tikai deklarācijas brīdī vai klases konstruktorā. Pēc inicializācijas tā vērtība nevar tikt mainīta.
Izmantošanas mērķi:
- Nemainīguma nodrošināšana: Nodrošina, ka lauka vērtība nejauši nemainīsies pēc objekta izveides. Tas palielina koda uzticamību un atvieglo kļūdu meklēšanu.
- Konstantes katram eksemplāram: Atšķirībā no statiskajām konstantes (
const),readonlylauki var būt dažādas vērtības dažādiem klases eksemplāriem. - Inicializācija konstruktorā: Ļauj noteikt galīgo lauka vērtību, balstoties uz konstruktorā esošo loģiku, kas nav iespējama
constlaukiem (tie jāinicializē ar literālu vai konstanti laikā, kad tiek kompilēts kods). - Veiktspējas uzlabošana ar struktūrām: Struktūrām
readonlylauki var uzlabot veiktspēju, jo kompilators var veikt dažas optimizācijas, zinot, ka vērtība nemainīsies.
Piemērs:
public class MyClass
{
public readonly int ImmutableValue; // Var būt inicializēts šeit vai konstruktorā
public readonly string Name;
// Konstruktorā piešķirt vērtības `readonly` laukiem
public MyClass(int value, string name)
{
ImmutableValue = value;
Name = name;
}
// Šī metode izraisīs kompilācijas kļūdu, jo mēģina mainīt `readonly` lauku
// public void TryChangeValue(int newValue)
// {
// ImmutableValue = newValue; // Kļūda kompilācijā
// }
}