Sobes.tech
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:

  1. 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.
  2. Konstantes katram eksemplāram: Atšķirībā no statiskajām konstantes (const), readonly lauki var būt dažādas vērtības dažādiem klases eksemplāriem.
  3. Inicializācija konstruktorā: Ļauj noteikt galīgo lauka vērtību, balstoties uz konstruktorā esošo loģiku, kas nav iespējama const laukiem (tie jāinicializē ar literālu vai konstanti laikā, kad tiek kompilēts kods).
  4. Veiktspējas uzlabošana ar struktūrām: Struktūrām readonly lauki 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ā
    // }
}