开发者

Prevent usage of default constructor

Is there a way to prevent the usage of the default constructor?

All I can think of is throwing an exception, but开发者_如何学运维 I would like something that causes a compile time error.


  • If everything in the class is static, consider making it a static class. That way, you won't get a constructor at all.
  • If you want a parameterless constructor but you don't want it to be public, declare it explicitly and make it private (or internal etc)
  • If you don't want a parameterless constructor but do want constructors with parameters, then just declare the parameterized constructor - the default constructor won't be generated for you

I think that should cover all bases...


Make it private.

So,

class SomeClass
{
    private SomeClass()
    {
    }

    public SomeClass(int SomeParam)
    {
    }
}


You can just make it private:

private MyClass()
{
}

Alternatively (if you didn't know already) if you just declare a constructor with parameters, the default one isn't added by the compiler, e.g.

private MyClass(string myParameter)
{
    //Can't call new MyClass() anymore
}


One thing to mention that others have not. The default constructor should still be able to set up the default implementation bits, to avoid reuse. This is not a problem if it is private, as you can still chain down to a private constructor. You just make it unavailable to outside sources.

private MyClass()
{
}

public MyClass(string something) : this()
{
}

That solves the problem. Note, however, that protected may actually be a preferred implementation if the class is not sealed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜