Programmēšana

Paskaidrotas statiskās klases un statiskās klases locekļi C #

Statiskais atslēgvārds C # programmēšanas valodā ļauj noteikt statiskās klases un statiskos locekļus.

Statiskā klase ir līdzīga klasei, kas ir gan abstrakta, gan aizzīmogota. Atšķirība starp statisko klasi un nestacionāro klasi ir tāda, ka statisko klasi nevar iegūt vai pārmantot, un ka visiem klases locekļiem ir statisks raksturs. Lai klasi pasludinātu par statisku, klases deklarācijā tā jāatzīmē ar statisko atslēgvārdu.

Statiskajā klasē vai dalībniekā nav uzvedības, tāpēc nav jēgas atļaut mantot arī statisko klasi. Statiskajā klasē var būt tikai statiski locekļi - statiskajā klasē nevar deklarēt instances dalībniekus (metodes, mainīgos, īpašības utt.). Jums var būt statisks konstruktors statiskajā klasē, bet nevar būt instances konstruktors statiskajā klasē.

Kad lietot statisko klasi C #

Kad jums vajadzētu doties uz statisko nodarbību? Parasti jūs varat ieviest palīgu vai lietderības klases kā statiskas klases, jo tās nav jāprecentizē vai nav jāpārmanto, un parasti tās satur dažu atkārtoti lietojamu metožu un īpašību kolekciju. Šis kodu saraksts parāda, kā izskatās statiska klase C #.

publiskā statiskā klase FileLogger

    {

public static void Log (virknes ziņojums)

        {

// Metode datu reģistrēšanai teksta failā

        }

    }

Kad lietot statiskās metodes C #

Statiskās metodes ir metodes, kuru izsaukšanai nav nepieciešams klases gadījums - tās var izsaukt pašā klasē. Ņemiet vērā, ka statiskās metodes var piekļūt tikai statiskās klases dalībniekiem. Jums var būt statiskas metodes statiskās klases vai nemestiskās klases iekšpusē. Jums var būt arī statisks konstruktors statiskā klasē vai nestacionārā klasē. Statisko konstruktoru izmanto, lai inicializētu klases statiskos locekļus. Klases statiskais konstruktors tiek izsaukts, pirmo reizi piekļūstot statiskam klases dalībniekam.

Kāpēc mums vajadzētu izmantot statiskas metodes? To izpilde ir nedaudz ātrāka nekā nemestiskās metodes, t.i., gadījumu metodes. Iemesls ir tāds, ka izpildlaiks iet garām šo rādītājs kā netiešs parametrs ne-statiskām vai instanču metodēm. Ņemiet vērā, ka metodei, kas nav statiska, kompilators izstaro callvirt instrukcija, pat ja metode nav virtuāla. Ja metodes padarāt statiskas, kompilators izstaro ne virtuālas zvanu vietnes, novēršot papildu pārbaudi, vai eksemplārs nav derīgs. Tas varētu dot jums dažas veiktspējas priekšrocības.

Tādēļ, ja jūsu izveidotā lietojumprogramma ir kritiska veiktspējai, var būt vērts kodā izmantot statiskos veidus un metodes. Veiktspējas pieaugums var būt ievērojams, ja jūsu kods veic lielu skaitu zvanu šādiem tipiem un dalībniekiem.

Šis koda fragments ilustrē statiskās metodes izskatu.

public static void Log (virknes ziņojums)

        {

virknes failsPath = @ "F: \ Log.txt";

izmantojot (StreamWriter streamWriter = new StreamWriter (filePath, true))

            {

streamWriter.WriteLine (ziņojums);

streamWriter.Close ();

            }

        }

Kā izmantot statiskos klases locekļus C #

CLR sadala sistēmas atmiņu trīs atšķirīgos reģionos: kaudze, kaudze un augstfrekvences kaudze. Tā kā statiskajiem objektiem var piekļūt tieši, neveidojot klases gadījumus, tiem ir jābūt atmiņā visā lietojumprogrammas darbības laikā; tiem nav jāvāc atkritumi. Tāpēc statiskie objekti tiek glabāti augstfrekvences kaudzē. Katram lietojumprogrammas domēnam parasti ir viena augstfrekvences kaudze.

Apskatīsim statiskos klases locekļus. Arī šoreiz statisks objekts ir tāds, kas saglabājas atmiņā visu programmas izpildes laiku. Paplašinot iepriekš minēto reģistrēšanas piemēru, šāds kodu saraksts parāda, kāda varētu būt FileLogger klase ar statiskiem dalībniekiem.

publiskā statiskā klase FileLogger

    {

privāts statisks tikai lasāms objekts lockObject = jauns objekts ();

publiskā statiskā virkne FilePath

        {

gūt; komplekts;

        }

public static void Log (virknes ziņojums)

        {

bloķēt (lockObject)

            {

ja (! string.IsNullOrEmpty (FilePath))

izmantojot (StreamWriter streamWriter = new StreamWriter (FilePath, true))

                {

streamWriter.WriteLine (ziņojums);

streamWriter.Close ();

                }

            }

        }

    }

Ievērojiet nosaukta statiskā rekvizīta izmantošanu FilePath. Lai nodrošinātu vītņu drošību, slēdzene atslēgvārds ir izmantots. Iekšpusē ir veikta pārbaude Žurnāls () metode, lai pārbaudītu, vai FilePath īpašums nav nulle un nav tukšs.

Atcerieties, ka, ja lietojumprogrammas ātrums ir būtisks, varētu būt lietderīgi izmantot statiskas metodes. Tos var izmantot gan statiskajās, gan nestatiskajās klasēs.

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