C#中的类怎么可能没有定义构造函数? 例如,我有一个班级
internal class TextStyle
{
internal string text = "";
internal Font font = new Font("Arial", 8);
internal Color color = Color.Black;
}
在代码中,此类被实例化为
TextStyle textParameters = new TextStyle();
答案 0 :(得分:38)
如果没有为非静态类声明任何构造函数,编译器会为您提供public(或受抽象类保护)无参数构造函数。您的类有效地具有以下构造函数:
public TextStyle()
{
}
这在C#4规范的第10.11.4节中描述:
如果类不包含实例构造函数声明,则会自动提供默认实例构造函数。该默认构造函数只是调用直接基类的无参数构造函数。如果直接基类没有可访问的无参数实例构造函数,则会发生编译时错误。如果类是抽象的,则默认构造函数的声明可访问性为
protected
。否则,默认构造函数的声明可访问性为public
。
C#中没有任何实例构造函数的唯一类是静态类,而不能具有构造函数。