The constructor point should put things in the desired initial valid state.
The instance constructor places the instance in its initial valid state.
An instance constructor that accepts arguments places the instance in its initial valid state, which reflects its arguments.
The static constructor places the type in its initial valid state. For instance. initialization of static elements used by static methods of the class or shared by all instances.
Ideally, all methods will leave the object and type in an acceptable state, but the designers differ in that they are responsible for the fact that they fell into it in the first place.
Any attempt to call the constructor twice is an error, since “re-entering it in the initial correct state” is not something you can logically do twice (“initial” and “again” do not work well in the same sentence). The compiler helps us (refusal to compile in it) and the language (in the absence of a way to express this) from doing such a thing.
And, being a logical impossibility, this is not something you can really do (well, I want to draw a triangle with more than three sides, but only to say that I did it). This suggests that you are using your constructor to do something other than configure the initial valid state.
Doing anything other than establishing such the correct state in the constructor is (as it doesn’t work) an optimization at best, often a serious design flaw, and possibly (worst of all, because it lasts longer), an optimization attempt that really a serious design flaw.
One of the signs that your optimization attempt is actually a design flaw is the desire to call the static constructor more than once or call the instance constructor more than once on the same object.
Define the desired repeated behavior, move it to a separate method, and call it as necessary, both from the constructor and from other sources. Then double-check your design logic, as this is a pretty serious mistake to search for in class design and suggests that you have deeper problems.