Freigeben über


X++-Elemente der statischen Klasse

Hinweis

Community-Interessensgruppen sind jetzt von Yammer zu Microsoft Viva Engage gewechselt. Um an einer Viva Engage-Community teilzunehmen und an den neuesten Diskussionen teilzunehmen, füllen Sie das Formular "Anfordern des Zugriffs auf Finance and Operations Viva Engage Community" aus , und wählen Sie die Community aus, der Sie beitreten möchten.

In diesem Artikel werden statische Klassenmmber in X++ beschrieben. Im Allgemeinen sind statische Methoden für diese Fälle vorgesehen:

  • Die Methode hat keinen Grund, auf die Membervariablen zuzugreifen, die in der Klasse deklariert sind.
  • Die Methode hat keinen Grund, Instanzen (nicht statische) Methoden der Klasse aufzurufen.

Sie deklarieren statische Klassenmmber mithilfe des statischen Schlüsselworts. Das statische Schlüsselwort weist das System an, nur eine Instanz der Methode zu erstellen, unabhängig von der Anzahl der Instanzen der Klasse. Diese eine Instanz wird während der gesamten Sitzung verwendet.

Statische Methoden

In diesem Abschnitt wird ein Szenario beschrieben, in dem ein Softwareschlüsseltyp verwendet wird, um Piraterie zu verhindern. Jede Instanz eines Softwareschlüssels kann einen eigenen eindeutigen Wert aufweisen. Da alle Softwareschlüssel den Regeln des Softwareschlüsseldesigns entsprechen müssen, ist die Logik, die auf die Einhaltung von Softwareschlüsseln testet, für alle Softwareschlüssel identisch. Daher sollte die Methode, die die Konformitätsüberprüfungslogik enthält, statisch sein.

Nachfolgend sehen Sie ein Beispiel für eine Methode, die mithilfe des statischen Schlüsselworts deklariert wird.

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

Im folgenden Beispiel müssen Sie keine Instanz der SoftwareKey-Klasse erstellen, bevor Sie eine statische Methode für die Klasse aufrufen. Wenn Sie die statische validateSoftwareKey-Methode aufrufen möchten, beginnt die Syntax mit dem Namen der Klasse, die die Methode enthält. Ein Doppelpunktpaar (::) wird verwendet, um den Klassennamen mit dem Namen der statischen Methode zu verbinden.

boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);

Statische Felder

Statische Felder sind Variablen, die mithilfe des statischen Schlüsselworts deklariert werden. Konzeptionell gelten sie für die Klasse, nicht für Instanzen der Klasse.

Statische Konstruktoren

Ein statischer Konstruktor wird garantiert ausgeführt, bevor statische Aufrufe oder Instanzen an die Klasse ausgeführt werden. Die Ausführung des statischen Konstruktors ist relativ zur Sitzung des Benutzers. Der statische Konstruktor weist die folgende Syntax auf.

static void TypeNew()

Sie rufen nie explizit den statischen Konstruktor auf. Der Compiler generiert Code, um sicherzustellen, dass der Konstruktor genau einmal aufgerufen wird, bevor eine andere Methode für die Klasse ausgeführt wird. Ein statischer Konstruktor wird verwendet, um statische Daten zu initialisieren oder eine bestimmte Aktion auszuführen, die nur einmal ausgeführt werden muss. Für den statischen Konstruktor können keine Parameter bereitgestellt werden, und er muss als statisch markiert werden.

Das folgende Codebeispiel zeigt, wie Sie eine Singleton-Instanz mithilfe eines statischen Konstruktors erstellen.

public class Singleton
{
    private static Singleton instance;

    private void new()
    {
    }

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

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

Der Singleton garantiert, dass immer nur eine Instanz der Klasse aufgerufen wird. Das folgende Beispiel zeigt, wie sie das Singleton instanziieren.

Singleton i = Singleton::Instance();

Statische Methoden

Statische Methoden, die auch als Klassenmethoden bezeichnet werden, gehören zu einer Klasse und werden mithilfe der Schlüsselwort statisch erstellt. Sie müssen ein Objekt nicht instanziieren, bevor Sie statische Methoden verwenden. Statische Methoden werden häufig verwendet, um mit Daten zu arbeiten, die in Tabellen gespeichert sind. Membervariablen können nicht in einer statischen Methode verwendet werden. Sie verwenden die folgende Syntax, um statische Methoden aufzurufen.

ClassName::methodName();

Statische Methoden und Instanzmethoden

Die Accessorstichwörter für Methoden beschränken niemals Aufrufe zwischen zwei Methoden, die sich in derselben Klasse befinden, unabhängig davon, welche Methode statisch oder nicht statisch ist. In einer statischen Methode sind Aufrufe der neuen Konstruktormethode gültig, auch wenn die neue Konstruktormethode mit dem privaten Modifizierer versehen ist. Für die Syntax für diese Aufrufe muss das neue Schlüsselwort verwendet werden. Der Code in einer statischen Methode muss ein Instanzobjekt einer eigenen Klasse erstellen, bevor er Instanzmethoden für die Klasse aufrufen kann.