Partilhar via


Membros da classe estática X++

Observação

Os grupos de interesse da comunidade passaram do Yammer para o Microsoft Viva Engage. Para participar de uma comunidade Viva Engage e participar das últimas discussões, preencha o formulário Solicitar acesso ao Finance and Operations Viva Engage Community e escolha a comunidade à qual deseja participar.

Este artigo descreve os membros da classe estática no X++. Em geral, os métodos estáticos destinam-se a estes casos:

  • O método não tem motivo para acessar as variáveis de membro que são declaradas na classe.
  • O método não tem motivo para chamar qualquer instância (não-estática) métodos da classe.

Você declara membros de classe estática usando a palavra-chave estática . A palavra-chave static instrui o sistema a criar apenas uma instância do método, independentemente do número de instâncias da classe que existem. Esta instância é usada durante toda a sessão.

Métodos estáticos

Esta seção descreve um cenário em que um tipo de chave de software é usado para ajudar a evitar a pirataria. Cada instância de uma chave de software pode ter seu próprio valor exclusivo. Como todas as chaves de software devem estar em conformidade com as regras de design de chaves de software, a lógica que testa a conformidade de chaves de software é a mesma para todas as chaves de software. Portanto, o método que contém a lógica de validação da conformidade deve ser estático.

Aqui está um exemplo de um método que é declarado usando a palavra-chave estática .

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

No exemplo a seguir, você não precisa construir uma instância da classe SoftwareKey antes de chamar um método estático na classe. Quando você deseja chamar o método estático validateSoftwareKey , a sintaxe começa com o nome da classe que contém o método. Um par de dois pontos (::) é usado para conectar o nome da classe ao nome do método estático.

boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);

Campos estáticos

Campos estáticos são variáveis que são declaradas usando a palavra-chave estática . Conceitualmente, eles se aplicam à classe, não às instâncias da classe.

Construtores estáticos

Um construtor estático tem a garantia de ser executado antes que qualquer chamada estática ou de instância seja feita para a classe. A execução do construtor estático é relativa à sessão do usuário. O construtor estático tem a seguinte sintaxe.

static void TypeNew()

Você nunca chama explicitamente o construtor estático. O compilador irá gerar código para certificar-se de que o construtor é chamado exatamente uma vez antes de qualquer outro método na classe. Um construtor estático é usado para inicializar quaisquer dados estáticos ou executar uma ação específica que deve ser executada apenas uma vez. Nenhum parâmetro pode ser fornecido para o construtor estático, e ele deve ser marcado como estático.

O exemplo de código a seguir mostra como criar uma instância singleton usando um construtor estático.

public class Singleton
{
    private static Singleton instance;

    private void new()
    {
    }

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

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

O singleton garante que apenas uma instância da classe será chamada. O exemplo a seguir mostra como instanciar o singleton.

Singleton i = Singleton::Instance();

Métodos estáticos

Os métodos estáticos, que também são conhecidos como métodos de classe, pertencem a uma classe e são criados usando a palavra-chave static. Não é necessário instanciar um objeto antes de usar métodos estáticos. Os métodos estáticos são frequentemente usados para trabalhar com dados armazenados em tabelas. As variáveis de membro não podem ser usadas em um método estático. Use a sintaxe a seguir para chamar métodos estáticos.

ClassName::methodName();

Métodos estáticos e de instância

As palavras-chave do acessador em métodos nunca restringem chamadas entre dois métodos que estão na mesma classe, independentemente de qual método é estático ou não estático. Em um método estático, chamadas para o novo método construtor são válidas mesmo se o novo método construtor é decorado com o modificador privado . A sintaxe dessas chamadas requer que a nova palavra-chave seja usada. O código em um método estático deve construir um objeto de instância de sua própria classe antes de poder chamar qualquer método de instância na classe.