Элементы статического класса X++

В этой статье описываются элементы статических классов в X++. В общем случае используйте статические методы:

  • Метод не требует доступа к переменным-членам, объявленным в классе.
  • Методу не нужно вызывать методы экземпляра (нестатических) класса.

Объявите элементы статического класса с помощью статического ключевого слова. Статическое ключевое слово указывает системе создать только один экземпляр метода независимо от количества экземпляров класса. Используйте этот экземпляр на протяжении всего сеанса.

Static methods

В этом разделе описывается сценарий, в котором используется тип ключа программного обеспечения для предотвращения пиратства. Каждый экземпляр ключа программного обеспечения может иметь собственное уникальное значение. Так как все ключи программного обеспечения должны соответствовать правилам проектирования ключа программного обеспечения, логика, которая проверяет соответствие ключа программного обеспечения, совпадает со всеми ключами программного обеспечения. Поэтому метод, содержащий логику проверки соответствия, должен быть статическим.

Ниже приведен пример метода, объявленного с помощью статического ключевого слова.

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

В следующем примере вам не нужно создавать экземпляр класса SoftwareKey перед вызовом статического метода в классе. При вызове метода static validateSoftwareKey синтаксис начинается с имени класса, содержащего метод. Пара двоеточий (::) подключает имя класса к имени статического метода.

boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);

Static fields

Статические поля — это переменные, объявляемые с помощью статического ключевого слова. Концептуально они применяются к классу, а не к экземплярам класса.

Static constructors

Статический конструктор всегда выполняется перед выполнением всех статических вызовов или вызовов экземпляров в класс. Выполнение статического конструктора относительно сеанса пользователя. Статический конструктор использует следующий синтаксис.

static void TypeNew()

Вы никогда не вызываете статический конструктор. Компилятор создает код, чтобы убедиться, что конструктор вызывается ровно один раз перед любым другим методом класса. Используйте статический конструктор для инициализации статических данных или выполнения определенного действия, которое должно выполняться только один раз. Невозможно указать параметры для статического конструктора, и его необходимо пометить как статический.

В следующем примере кода показано, как создать одноэлементный экземпляр с помощью статического конструктора.

public class Singleton
{
    private static Singleton instance;

    private void new()
    {
    }

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

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

Одноэлементный элемент гарантирует, что класс имеет только один экземпляр. В следующем примере показано, как создать экземпляр одноэлементного элемента.

Singleton i = Singleton::Instance();

Static method

Статические методы, которые также называются методами класса, принадлежат к классу и создаются с помощью статического ключевого слова. Прежде чем использовать статические методы, вам не нужно создавать экземпляр объекта. Используйте статические методы для работы с данными, хранящимися в таблицах. Переменные-члены нельзя использовать в статическом методе. Используйте следующий синтаксис для вызова статических методов.

ClassName::methodName();

Статические и экземплярные методы

Ключевые слова метода доступа никогда не ограничивают вызовы между двумя методами, которые находятся в одном классе, независимо от того, какой метод является статическим или нестатичным. В статическом методе вызовы нового метода конструктора допустимы, даже если новый метод конструктора украшен частным модификатором. Синтаксис для этих вызовов требует использования нового ключевого слова. Код в статическом методе должен создать объект экземпляра собственного класса, прежде чем он сможет вызывать любые методы экземпляра в классе.