Delen via


X++ statische klasseleden

Opmerking

Community-belangengroepen zijn nu verplaatst van Yammer naar Microsoft Viva Engage. Als u wilt deelnemen aan een Viva Engage-community en deel wilt nemen aan de meest recente discussies, vult u het formulier Toegang aanvragen tot Finance and Operations Viva Engage Community in en kiest u de community waaraan u wilt deelnemen.

In dit artikel worden statische klasseleden in X++beschreven. In het algemeen zijn statische methoden bedoeld voor deze gevallen:

  • De methode heeft geen reden om toegang te krijgen tot de lidvariabelen die in de klasse zijn gedeclareerd.
  • De methode heeft geen reden om exemplaren (niet-statische) methoden van de klasse aan te roepen.

U declareert statische klasseleden met behulp van het statische trefwoord. Het statische trefwoord geeft het systeem de opdracht om slechts één exemplaar van de methode te maken, ongeacht het aantal exemplaren van de klasse dat er zijn. Dit ene exemplaar wordt tijdens uw sessie gebruikt.

Statische methoden

In deze sectie wordt een scenario beschreven waarin een softwaresleuteltype wordt gebruikt om piraterij te voorkomen. Elk exemplaar van een softwaresleutel kan een eigen unieke waarde hebben. Omdat alle softwaresleutels moeten voldoen aan de regels van het ontwerp van softwaresleutels, is de logica waarmee wordt getest op naleving van softwaresleutels hetzelfde voor alle softwaresleutels. Daarom moet de methode die de validatielogica voor conformiteit bevat, statisch zijn.

Hier volgt een voorbeeld van een methode die wordt gedeclareerd met behulp van het statische trefwoord.

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

In het volgende voorbeeld hoeft u geen exemplaar van de SoftwareKey-klasse te maken voordat u een statische methode aanroept voor de klasse. Wanneer u de statische validateSoftwareKey-methode wilt aanroepen, begint de syntaxis met de naam van de klasse die de methode bevat. Er wordt een paar dubbele punten (::) gebruikt om de klassenaam te verbinden met de naam van de statische methode.

boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);

Statische velden

Statische velden zijn variabelen die worden gedeclareerd met behulp van het statische trefwoord. Conceptueel zijn ze van toepassing op de klasse, niet op exemplaren van de klasse.

Statische constructors

Een statische constructor wordt gegarandeerd uitgevoerd voordat er statische aanroepen of exemplaren naar de klasse worden gedaan. De uitvoering van de statische constructor is relatief ten opzichte van de sessie van de gebruiker. De statische constructor heeft de volgende syntaxis.

static void TypeNew()

U roept de statische constructor nooit expliciet aan. De compiler genereert code om ervoor te zorgen dat de constructor precies één keer wordt aangeroepen vóór een andere methode in de klasse. Een statische constructor wordt gebruikt om statische gegevens te initialiseren of een bepaalde actie uit te voeren die slechts één keer moet worden uitgevoerd. Er kunnen geen parameters worden opgegeven voor de statische constructor en deze moet worden gemarkeerd als statisch.

In het volgende codevoorbeeld ziet u hoe u een singleton-exemplaar maakt met behulp van een statische constructor.

public class Singleton
{
    private static Singleton instance;

    private void new()
    {
    }

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

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

De singleton garandeert dat slechts één exemplaar van de klasse ooit wordt aangeroepen. In het volgende voorbeeld ziet u hoe u een instantie van de singleton maakt.

Singleton i = Singleton::Instance();

Statische methoden

Statische methoden, die ook wel klassemethoden worden genoemd, behoren tot een klasse en worden gemaakt met behulp van het statische trefwoord. U hoeft geen instantie van een object te maken voordat u statische methoden gebruikt. Statische methoden worden vaak gebruikt om te werken met gegevens die zijn opgeslagen in tabellen. Lidvariabelen kunnen niet worden gebruikt in een statische methode. U gebruikt de volgende syntaxis om statische methoden aan te roepen.

ClassName::methodName();

Statische methoden en exemplaren

De trefwoorden van accessor op methoden beperken nooit aanroepen tussen twee methoden die zich in dezelfde klasse bevinden, ongeacht welke methode statisch of niet-statisch is. In een statische methode zijn aanroepen naar de nieuwe constructormethode geldig, zelfs als de nieuwe constructormethode is ingericht met de persoonlijke modifier. De syntaxis voor deze aanroepen vereist dat het nieuwe trefwoord wordt gebruikt. De code in een statische methode moet een exemplaarobject van een eigen klasse maken voordat deze instantiemethoden in de klasse kan aanroepen.