Programiranje

Razloženi statični razredi in člani statičnih razredov v C #

Ključna beseda static v programskem jeziku C # vam omogoča definiranje statičnih razredov in statičnih članov.

Statični razred je podoben razredu, ki je abstrakten in zapečaten. Razlika med statičnim razredom in nestatičnim razredom je v tem, da statičnega razreda ni mogoče ustvariti ali podedovati in da so vsi člani razreda po naravi statični. Če želite razred razglasiti za statičen, ga v oznaki razreda označite s ključno besedo static.

V statičnem razredu ali članu ni vedenja, zato tudi nima smisla dopuščati podedovanja statičnega razreda. Statični razred ima lahko samo statične člane - v statičnem razredu ne morete prijaviti članov primerka (metode, spremenljivke, lastnosti itd.). V statičnem razredu lahko imate statični konstruktor, v statičnem razredu pa ne morete imeti konstruktorja primerka.

Kdaj uporabiti statični razred v jeziku C #

Kdaj naj greš na statični tečaj? Običajno lahko razrede pomožnih ali pomožnih razredov uveljavite kot statične razrede, saj jih ni treba instancirati ali podedovati in na splošno vsebujejo zbirko nekaterih načinov in lastnosti za večkratno uporabo. Naslednji seznam kod ponazarja, kako izgleda statični razred v jeziku C #.

javni statični razred FileLogger

    {

javni statični void Log (niz sporočila)

        {

// Metoda za beleženje podatkov v besedilno datoteko

        }

    }

Kdaj uporabiti statične metode v C #

Statične metode so metode, za katere ni potreben primerek razreda, ki jih lahko prikliče sam razred. Upoštevajte, da lahko statične metode dostopajo samo do članov statičnega razreda. V statičnem ali ne-statičnem razredu imate lahko statične metode. Prav tako lahko imate statični konstruktor v statičnem ali ne-statičnem razredu. Statični konstruktor se uporablja za inicializacijo statičnih članov razreda. Pri prvem dostopu do statičnega člana razreda se prikliče statični konstruktor razreda.

Zakaj bi morali uporabljati statične metode? Izvedbe so nekoliko hitrejše kot nestatične metode, tj. Metode primerkov. Razlog je v tem, da izvajalno okolje mine to kazalec kot implicitni parameter na ne-statične metode ali metode. Upoštevajte, da za ne-statično metodo prevajalnik odda callvirt navodila, tudi če metoda ni navidezna. Če svoje metode naredite statične, prevajalnik oddaja neviralno pokličite spletnih mest, tako da se odpravi dodatno preverjanje, ali je primerek ničen. To vam bo morda prineslo nekaj prednosti v delovanju.

Če je aplikacija, ki jo gradite, zelo pomembna za delovanje, je morda smiselno v kodi uporabiti statične vrste in metode. Povečanje učinkovitosti je lahko občutno, če vaša koda velikokrat pokliče takšne vrste in člane.

Naslednji delček kode prikazuje, kako izgleda statična metoda.

javni statični void Log (niz sporočila)

        {

string filePath = @ "F: \ Log.txt";

z uporabo (StreamWriter streamWriter = nov StreamWriter (filePath, true))

            {

streamWriter.WriteLine (sporočilo);

streamWriter.Close ();

            }

        }

Kako uporabljati statične člane razreda v jeziku C #

CLR sistemski pomnilnik deli na tri ločena področja: sklad, kup in visokofrekvenčni kup. Ker je do statičnih predmetov mogoče dostopati neposredno, ne da bi ustvarili primerke razreda, morajo obstajati v pomnilniku skozi celotno življenjsko dobo aplikacije; ni treba, da se zbirajo smeti. Zato so statični predmeti shranjeni v visokofrekvenčnem kupu. Običajno imate en visokofrekvenčni kup za vsako domeno aplikacije.

Oglejmo si zdaj statične člane razreda. Tudi tokrat je statični objekt tisti, ki ostane v pomnilniku ves čas izvajanja aplikacije. Če razširimo zgornji primer beleženja, naslednji seznam kod ponazarja, kako bi izgledal razred FileLogger s statičnimi člani.

javni statični razred FileLogger

    {

zasebni statični objekt samo za branje lockObject = nov objekt ();

javni statični niz FilePath

        {

dobili; set;

        }

javni statični void Log (niz sporočila)

        {

zakleni (lockObject)

            {

if (! string.IsNullOrEmpty (FilePath))

z uporabo (StreamWriter streamWriter = nov StreamWriter (FilePath, true))

                {

streamWriter.WriteLine (sporočilo);

streamWriter.Close ();

                }

            }

        }

    }

Upoštevajte uporabo imenovane statične lastnosti FilePath. Da bi zagotovili varnost navojev, zaklepanje uporabljena je bila ključna beseda. Opravljen je bil pregled znotraj Dnevnik () metoda za preverjanje, ali je vrednost FilePath lastnost ni nična in ni prazna.

Ne pozabite, da kadar je bistvenega pomena hitrost aplikacije, se lahko splača uporabiti statične metode. Uporabite jih lahko tako v statičnih kot v ne-statičnih razredih.

$config[zx-auto] not found$config[zx-overlay] not found