X++ staatilised klassi liikmed

Selles artiklis kirjeldatakse staatilisi X++-klassi liikmeid. Üldiselt kasutage staatilisi meetodeid järgmistel juhtudel.

  • Meetod ei pea juurde pääsema klassis deklareeritud liikmemuutujatele.
  • See meetod ei pea kutsuma klassi ühtegi eksemplari (mittestatistikulist) meetodit.

Staatiliste klassiliikmete deklareerimine staatilise märksõna abil. Staatiline märksõna juhendab süsteemi looma meetodist ainult ühe eksemplari, sõltumata klassi eksemplaride arvust. Kasutage seda ühte eksemplari kogu seansi jooksul.

Static methods

Selles jaotises kirjeldatakse stsenaariumi, kus piraatluse vältimiseks kasutatakse tarkvaravõtme tüüpi. Igal tarkvaravõtme eksemplaril võib olla oma kordumatu väärtus. Kuna kõik tarkvaravõtmed peavad vastama tarkvaravõtme kujundamise reeglitele, on tarkvaravõtme vastavuse testimise loogika kõigi tarkvaravõtmete puhul sama. Seetõttu peaks vastavuse valideerimise loogikat sisaldav meetod olema staatiline.

Siin on näide meetodist, mis deklareeritakse staatilise märksõna abil.

public class SoftwareKey
{
    static public boolean validateSoftwareKey(str _softwareKeyString)
    {
        // Your code here.
        return false;
    }
}

Järgmises näites ei pea te enne klassi staatilise meetodi kutsumist koostama klassi SoftwareKey eksemplari. Kui soovite helistada meetodile staatiline valideeriteSoftwareKey , algab süntaks meetodit sisaldava klassi nimega. Koolonite paar (::) ühendab klassi nime staatilise meetodi nimega.

boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);

Static fields

Staatilised väljad on muutujad, mille deklareerite staatilise märksõna abil. Mõistetavalt kehtivad need klassile, mitte klassi esinemiskorrale.

Static constructors

Staatiline konstruktor töötab alati enne klassile staatiliste või eksemplarikutsete tegemist. Staatilise konstruktori käivitamine on kasutaja seansi suhtes suhteline. Staatiline konstruktor kasutab järgmist süntaksit.

static void TypeNew()

Te ei helista kunagi konkreetselt staatilisele konstruktorile. Kompilaator genereerib koodi, mis tagab, et konstruktorit nimetatakse täpselt üks kord enne klassi mis tahes muud meetodit. Staatilise konstruktori abil saate lähtestada staatilisi andmeid või teha kindla toimingu, mida tuleb teha ainult üks kord. Staatilisele konstruktorile ei saa parameetreid määrata ja peate selle märkima staatiliseks.

Järgmine koodinäide näitab, kuidas luua staatilise konstruktori abil singletoni eksemplar.

public class Singleton
{
    private static Singleton instance;

    private void new()
    {
    }

    static void TypeNew()
    {
        instance = new Singleton();
    }

    public static Singleton Instance()
    {
        return Singleton::instance;
    }
}

Üksikton tagab, et klassil on ainult üks eksemplar. Järgmises näites kirjeldatakse üksiktoni lähtestamist.

Singleton i = Singleton::Instance();

Static method

Staatilised meetodid, mida nimetatakse ka klassimeetoditeks, kuuluvad klassi ja need luuakse võtmesõna staatilise abil. Enne staatiliste meetodite kasutamist ei pea te objekti lähtestama. Kasutage tabelites talletatud andmetega töötamiseks staatilisi meetodeid. Liikmemuutujaid ei saa staatilises meetodis kasutada. Staatiliste meetodite kutsumiseks kasutage järgmist süntaksit.

ClassName::methodName();

Staatilised ja eksemplarimeetodid

Juurdepääsumeetodi märksõnad meetodite kohta ei piira kõnesid kahe samas klassis oleva meetodi vahel, olenemata sellest, milline meetod on staatiline või mittestaatiline. Staatilise meetodi korral on uue konstruktori meetodi kutsumine kehtiv isegi siis, kui uus konstruktorimeetod on kaunistatud privaatse muutemeetodiga. Nende kõnede süntaks nõuab uue märksõna kasutamist. Staatilise meetodi kood peab koostama oma klassi eksemplariobjekti, enne kui see saab klassis kutsuda mis tahes eksemplarimeetodit.