Is a Java static block equivalent to a C# static c

2019-02-06 11:03发布

问题:

What is the real difference between a C# static constructor and a Java static block?

They both must be parameterless. They are both called only once, when the related class is first used.

Am I missing something, or are they the same thing, just with different names?

回答1:

They are equivalent, except that a C# class can only have one static constructor (plus static field initializers).

Also, in C#, a static constructor will apply the beforefieldinit flag.



回答2:

They look the same, the following example shows, that c# static constructor works the same as static block in java

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

    private static readonly Singleton INSTANCE;

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


回答3:

Yes They are equivalent Another point is java does not support static constructor but support static block and c# support static constructor.



回答4:

They are not.

In C#, there blocks can only hold constructors. In java you are able to execute statements.