Pergunta

Qual é a diferença real entre um construtor estático C# e um bloco estático Java?

Ambos devem ser sem parâmetros. Ambos são chamados apenas uma vez, quando a classe relacionada é usada pela primeira vez.

Estou perdendo alguma coisa, ou eles são a mesma coisa, apenas com nomes diferentes?

Foi útil?

Solução

Eles são equivalentes, exceto que uma classe C# pode ter apenas um construtor estático (além de inicializadores de campo estático).

Além disso, em C#, um static construtor aplicará o beforefieldinit bandeira.

Outras dicas

Eles parecem iguais, o exemplo a seguir mostra que o construtor estático C# funciona da mesma forma que o bloqueio estático em java

protected Singleton()
{
    Console.WriteLine("Singleton constructor");
}

    private static readonly Singleton INSTANCE;

    static Singleton() {
        try {
           INSTANCE = new Singleton();
        }
        catch(Exception e) {
            throw new Exception();
        }
    }

Sim, eles são equivalentes, outro ponto é que o Java não suporta construtor estático, mas suporta o bloco estático e o construtor estático de suporte estático.

Eles não são.

Em C#, há blocos só podem conter construtores. Em Java, você pode executar declarações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top