我认为在类(C#)中具有默认构造函数不是强制性的。
因此,在那种情况下,我应该在类中有一个空的构造函数,还是可以跳过它?
有一个空的默认构造函数是最佳实践吗?
Class test
{
public test()
{
}
......
}
要么
Class test
{
......
}
Answers:
如果该类不会被第三方使用,并且您不需要重载的构造函数,请不要编写空的构造函数。
但...
假设您已经发货了,而第三方使用了您的课程。几个月后,有一个新要求,使您添加带有参数的构造函数。
现在,通过这样做,C#编译器不再生成默认构造函数。如果未显式添加空的构造函数,则第三方代码将中断。
我认为,您应始终为第三方使用的公共类定义空的构造函数(一个衬里)。
There's nothing like default constructors。它是C#中的公共无参数构造函数。C#编译器将在编译时在类中寻找构造函数,如果未定义构造函数,则将添加一个公共的无参数构造函数。因此,如果您的类对象不需要任何特殊的构造操作,则可以跳过定义构造函数的操作。
其次,如果您定义一个带参数的构造函数,则编译器不会添加一个公共的无参数构造函数,因为编译器会假设您的对象必须通过您定义的构造函数进行构造。话虽如此,如果您至少有一个参数化的构造函数,并且需要用parameteress构造函数构造对象,则必须显式定义一个无参数的构造函数。
您还可以拥有一个私有的无参数构造函数,该构造函数有助于创建单例类。
我唯一要包括一个空的无参数构造函数的情况是,如果我希望该构造函数是私有的,或者希望无参数构造函数调用另一个以null为参数的重载。顺便说一句,在上面的示例中,您通过不指定public来使Test的构造函数私有。
class Foo
{
public Foo()
: this(null)
{
}
public Foo(string bar)
{
if (bar != null)
{
Console.WriteLine(bar);
}
}
}