Sobes.tech
Junior — Middle

Millised on peamised erinevused võtmesõnadest const, readonly ja static programmeerimises?

sobes.tech AI

Vastus AI-lt

C# keeles on võtmesõnad const, readonly ja static erineva otstarbega:

  • const — deklaratsioon konstant, mille väärtus on teada kompileerimise ajal ja seda ei saa muuta. Sellised väljad on põhimõtteliselt staatilised ja tuleb neid initsialiseerida deklaratsiooni ajal.

    public const double Pi = 3.14159;
    
  • readonly — väli, mille väärtust saab määrata ainult deklaratsiooni või klassi konstruktoris. Pärast initsialiseerimist seda muuta ei saa. Kasutatakse väärtuste jaoks, mis on teada ainult täitmise ajal.

    public readonly DateTime creationTime;
    
    public MyClass() {
        creationTime = DateTime.Now;
    }
    
  • static — modifikaator, mis näitab, et liige kuulub klassile endale, mitte eksemplile. Staatilised väljad ja meetodid on ühised kõigi klassi objektide jaoks.

    public static int InstanceCount = 0;
    

Võimalik on kombineerida static ja readonly:

public static readonly string ConfigPath = GetConfigPath();

Siin initsialiseerub ConfigPath üks kord ja sellele pääseb ligi ilma klassi eksemplari loomata.

Kokkuvõte:

  • const — muutumatu konstant, teada kompileerimise ajal.
  • readonly — muutumatu väli, initsialiseeritud objekti loomisel või statiliselt.
  • static — klassi liige, ühine kõigi eksemplaride jaoks.