有没有办法阻止使用默认构造函数?
我能想到的只是抛出一个异常,但我想要一些导致编译时错误的东西。
答案 0 :(得分:97)
我认为应涵盖所有基础......
答案 1 :(得分:37)
将其设为私有。
所以,
class SomeClass
{
private SomeClass()
{
}
public SomeClass(int SomeParam)
{
}
}
答案 2 :(得分:9)
你可以把它变成私人的:
private MyClass()
{
}
或者(如果您还不知道)如果您只是声明一个带参数的构造函数,编译器不会添加默认值,例如
private MyClass(string myParameter)
{
//Can't call new MyClass() anymore
}
答案 3 :(得分:6)
有一点要提及其他人没有。默认构造函数仍应能够设置默认实现位,以避免重用。如果它是私有的,这不是问题,因为您仍然可以链接到私有构造函数。你只是让它对外部来源无法使用。
private MyClass()
{
}
public MyClass(string something) : this()
{
}
解决了这个问题。但请注意,如果类没有密封,受保护实际上可能是首选实现。
答案 4 :(得分:1)
除了其他答案之外,您还可以阅读以下文字,了解有关Singleton模式的更多信息以及一些示例。单例模式依赖于构造函数是私有的。