Del via


X++ statiske klassemedlemmer

Note

Interessegrupper for fellesskapet har nå flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil bli med i et Viva Engage-fellesskap og delta i de siste diskusjonene, fyller du ut skjemaet Be om tilgang til Finance and Operations Viva Engage Community og velger fellesskapet du vil bli med i.

Denne artikkelen beskriver statiske klassemedlemmer i X++. Generelt sett kan du bruke statiske metoder for disse tilfellene:

  • Metoden trenger ikke å få tilgang til medlemsvariabler som deklareres i klassen.
  • Metoden trenger ikke å kalle noen forekomstmetoder (ikke-statiske) for klassen.

Deklarer statiske klassemedlemmer ved hjelp av det statiske nøkkelordet. Det statiske nøkkelordet instruerer systemet om å opprette bare én forekomst av metoden, uavhengig av antall forekomster av klassen. Bruk denne ene forekomsten gjennom hele økten.

Statiske metoder

Denne delen beskriver et scenario der en programvarenøkkeltype brukes til å forhindre piratkopiering. Hver forekomst av en programvarenøkkel kan ha sin egen unike verdi. Fordi alle programvarenøkler må samsvare med reglene for programvarenøkkelutforming, er logikken som tester for programvarenøkkelens samsvar, den samme for alle programvarenøkler. Derfor bør metoden som inneholder samsvarsvalideringslogikken være statisk.

Her er et eksempel på en metode som deklareres ved hjelp av det statiske nøkkelordet.

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

I eksemplet nedenfor trenger du ikke å konstruere en forekomst av SoftwareKey-klassen før du kaller en statisk metode på klassen. Når du vil kalle den statiske validateSoftwareKey-metoden , starter syntaksen med navnet på klassen som inneholder metoden. Et par kolon (::) kobler klassenavnet til det statiske metodenavnet.

boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);

Statiske felt

Statiske felt er variabler som du deklarerer ved hjelp av det statiske nøkkelordet. Begrepsmessig gjelder de for klassen, ikke for forekomster av klassen.

Statiske konstruktører

En statisk konstruktør kjører alltid før noen statiske eller forekomstkall utføres til klassen. Kjøringen av den statiske konstruktøren er relativ til brukerens økt. Den statiske konstruktøren bruker følgende syntaks.

static void TypeNew()

Du kaller aldri eksplisitt den statiske konstruktøren. Kompilatoren genererer kode for å sikre at konstruktøren kalles nøyaktig én gang før en annen metode i klassen. Bruk en statisk konstruktør til å initialisere statiske data eller utføre en bestemt handling som bare må utføres én gang. Du kan ikke angi parametere for den statiske konstruktøren, og du må merke den som statisk.

Følgende kodeeksempel viser hvordan du oppretter en singletonforekomst ved hjelp av en statisk konstruktør.

public class Singleton
{
    private static Singleton instance;

    private void new()
    {
    }

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

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

Singleton garanterer at klassen bare har ett tilfelle. Følgende eksempel viser hvordan du kan starte singletonen.

Singleton i = Singleton::Instance();

Statisk metode

Statiske metoder, som også kalles klassemetoder, tilhører en klasse og opprettes ved hjelp av nøkkelordet statisk. Du trenger ikke å starte et objekt før du bruker statiske metoder. Bruk statiske metoder til å arbeide med data som er lagret i tabeller. Du kan ikke bruke medlemsvariabler i en statisk metode. Bruk følgende syntaks til å kalle statiske metoder.

ClassName::methodName();

Statiske metoder og forekomstmetoder

Accessor-nøkkelordene på metoder begrenser aldri kall mellom to metoder som er i samme klasse, uavhengig av hvilken metode som er statisk eller ikke-statisk. I en statisk metode er kall til den nye konstruktørmetoden gyldige selv om den nye konstruktørmetoden er dekorert med den private modifikatoren. Syntaksen for disse kallene krever at du bruker det nye nøkkelordet. Koden i en statisk metode må konstruere et forekomstobjekt av sin egen klasse før den kan kalle opp forekomstmetoder i klassen.