X++ statikus osztálytagok

Ez a cikk az X++ statikus osztálytagokat ismerteti. Általában statikus metódusokat használjon az alábbi esetekben:

  • A metódusnak nem kell hozzáférnie az osztályban deklarált tagváltozókhoz.
  • A metódusnak nem kell meghívnia az osztály egyik példányának (nem statikus) metódusát sem.

A statikus osztálytagok deklarálása a statikus kulcsszó használatával. A statikus kulcsszó arra utasítja a rendszert, hogy az osztály példányainak számától függetlenül csak egy példányt hozzon létre a metódusból. Használja ezt az egy példányt a munkamenet során.

Static methods

Ez a szakasz egy olyan forgatókönyvet ír le, amelyben a szoftverkulcs típusa segít megelőzni a kalózkodást. A szoftverkulcs minden példánya saját egyedi értékkel rendelkezhet. Mivel minden szoftverkulcsnak meg kell felelnie a szoftverkulcsok tervezésének szabályainak, a szoftverkulcsok megfelelőségét tesztelő logika minden szoftverkulcs esetében azonos. Ezért a megfelelőségi ellenőrzési logikát tartalmazó módszernek statikusnak kell lennie.

Íme egy példa a statikus kulcsszóval deklarált metódusra.

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

Az alábbi példában nem kell létrehoznia a SoftwareKey osztály egy példányát, mielőtt statikus metódust hív meg az osztályon. Ha a static validateSoftwareKey metódust szeretné meghívni, a szintaxis a metódust tartalmazó osztály nevével kezdődik. Kettőspont pár (::) az osztálynevet a statikus metódus nevéhez köti.

boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);

Static fields

A statikus mezők olyan változók, amelyeket a statikus kulcsszó használatával deklarál. Elméletileg az osztályra vonatkoznak, nem az osztály példányaira.

Static constructors

A statikus konstruktorok mindig futnak, mielőtt bármilyen statikus vagy példányhívást indítanának az osztályba. A statikus konstruktor végrehajtása a felhasználó munkamenetéhez viszonyítva történik. A statikus konstruktor az alábbi szintaxist használja.

static void TypeNew()

A statikus konstruktort soha nem hívhatja meg explicit módon. A fordító létrehoz egy kódot, hogy a konstruktor neve pontosan egyszer legyen meghívva az osztály bármely más metódusa előtt. Statikus konstruktor használatával inicializálhatja a statikus adatokat, vagy végrehajthat egy adott műveletet, amelyet csak egyszer kell végrehajtani. Nem adhat meg paramétereket a statikus konstruktorhoz, és statikusként kell megjelölnie.

Az alábbi példakód bemutatja, hogyan hozhat létre egyetlentonos példányt statikus konstruktor használatával.

public class Singleton
{
    private static Singleton instance;

    private void new()
    {
    }

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

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

A singleton garantálja, hogy az osztálynak csak egy példánya van. Az alábbi példa bemutatja, hogyan lehet példányosítani a singletont.

Singleton i = Singleton::Instance();

Static method

A statikus metódusok, amelyek más néven osztálymetszetek, egy osztályhoz tartoznak, és a statikus kulcsszóval jönnek létre. Statikus metódusok használata előtt nem kell példányosítania egy objektumot. Statikus módszerekkel dolgozhat a táblákban tárolt adatokkal. A tagváltozók statikus metódusban nem használhatók. A statikus metódusok meghívásához használja az alábbi szintaxist.

ClassName::methodName();

Statikus és példánymetóták

A metódusok kiegészítő kulcsszavai soha nem korlátozzák az azonos osztályba tartozó két metódus közötti hívásokat, függetlenül attól, hogy melyik metódus statikus vagy nem statikus. Statikus módszer esetén az új konstruktormetódus hívásai akkor is érvényesek, ha az új konstruktormetódus magánmetódus-módosítóval van díszítve. Ezeknek a hívásoknak a szintaxisához az új kulcsszót kell használnia. A statikus metódus kódjának létre kell készítenie egy példányobjektumot a saját osztályából, mielőtt meghívhatja az osztály bármely példánymetódusát.