Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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();
        }
    }

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

They are not.

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top