Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
In dit artikel worden statische klasleden in X++ beschreven. Gebruik in het algemeen statische methoden voor deze gevallen:
- De methode hoeft geen toegang te krijgen tot lidvariabelen die in de klasse zijn gedeclareerd.
- De methode hoeft geen instantie (niet-statische) methoden van de klasse aan te roepen.
Verklaar statische klasseleden door het statische trefwoord te gebruiken. Het statische trefwoord instrueert het systeem om slechts één instantie van de methode te maken, ongeacht het aantal instanties van de klasse. Gebruik deze ene instantie tijdens je sessie.
Static methods
In dit gedeelte wordt een scenario beschreven waarin een softwaresleuteltype wordt gebruikt om piraterij te voorkomen. Elk exemplaar van een softwaresleutel kan zijn eigen unieke waarde hebben. Omdat alle softwaresleutels moeten voldoen aan de regels voor het ontwerpen van softwaresleutels, is de logica die test op conformiteit van softwaresleutels hetzelfde voor alle softwaresleutels. Daarom moet de methode die de logica voor conformiteitsvalidatie bevat, statisch zijn.
Hier is een voorbeeld van een methode die wordt gedeclareerd met 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 in de klasse aanroept. Wanneer u de statische validateSoftwareKey-methode wilt aanroepen, begint de syntaxis met de naam van de klasse die de methode bevat. Een paar dubbele punten (::) verbindt de klassenaam met de naam van de statische methode.
boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);
Static fields
Statische velden zijn variabelen die je declareert met het statische trefwoord. Conceptueel zijn ze van toepassing op de klasse, niet op instanties van de klasse.
Static constructors
Een statische constructor draait altijd voordat statische of instantie-aanroepen naar de klasse worden gedaan. De uitvoering van de statische constructor is relatief ten opzichte van de sessie van de gebruiker. De statische constructor gebruikt de volgende syntaxis.
static void TypeNew()
Je roept nooit expliciet de statische constructor aan. De compiler genereert code om ervoor te zorgen dat de constructor precies één keer wordt aangeroepen vóór elke andere methode op de klasse. Gebruik een statische constructor om statische data te initialiseren of voer een bepaalde actie uit die slechts één keer hoeft te worden uitgevoerd. Je kunt geen parameters voor de statische constructor opgeven, en je moet het als statisch markeren.
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 de klasse slechts één instantie heeft. In het volgende voorbeeld ziet u hoe u de singleton kunt instantiëren.
Singleton i = Singleton::Instance();
Static method
Statische methoden, ook wel klassemethoden genoemd, behoren tot een klasse en worden gemaakt met behulp van het trefwoord statisch. U hoeft een object niet te instantiëren voordat u statische methoden gebruikt. Gebruik statische methoden om te werken met data die in tabellen is opgeslagen. Je kunt geen lidvariabelen gebruiken in een statische methode. Gebruik de volgende syntaxis om statische methoden aan te roepen.
ClassName::methodName();
Statische en instantiemethoden
De accessor-trefwoorden 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 versierd met de privé-modifier . De syntaxis voor deze aanroepen vereist dat je het nieuwe trefwoord gebruikt. De code in een statische methode moet een instantieobject van zijn eigen klasse construeren voordat het instantiemethoden in de klasse kan aanroepen.