Является ли статический блок Java эквивалентом статического конструктора C#?

StackOverflow https://stackoverflow.com/questions/2465251

Вопрос

В чем реальная разница между статическим конструктором C# и статическим блоком Java?

Они оба должны быть без параметров.Оба они вызываются только один раз, когда связанный класс используется впервые.

Я что-то упустил или это одно и то же, только с разными именами?

Это было полезно?

Решение

Они эквивалентны, за исключением того, что класс C# может иметь только один статический конструктор (плюс инициализаторы статических полей).

Кроме того, в C# static конструктор применит beforefieldinit флаг.

Другие советы

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

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

    private static readonly Singleton INSTANCE;

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

Да, они эквивалентны, другой момент - Java не поддерживает статический конструктор, но поддерживает статический блок и статический конструктор C#.

Они не.

В C# блоки могут содержать только конструкторы.В Java вы можете выполнять операторы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top