没有构造函数的C#类

时间:2012-02-14 09:35:57

标签: c# .net class constructor

C#中的类怎么可能没有定义构造函数? 例如,我有一个班级

internal class TextStyle
{
    internal string text = "";
    internal Font font = new Font("Arial", 8);
    internal Color color = Color.Black;
}

在代码中,此类被实例化为

TextStyle textParameters = new TextStyle();

1 个答案:

答案 0 :(得分:38)

如果没有为非静态类声明任何构造函数,编译器会为您提供public(或受抽象类保护)无参数构造函数。您的类有效地具有以下构造函数:

public TextStyle()
{
}

这在C#4规范的第10.11.4节中描述:

  

如果类不包含实例构造函数声明,则会自动提供默认实例构造函数。该默认构造函数只是调用直接基类的无参数构造函数。如果直接基类没有可访问的无参数实例构造函数,则会发生编译时错误。如果类是抽象的,则默认构造函数的声明可访问性为protected。否则,默认构造函数的声明可访问性为public

C#中没有任何实例构造函数的唯一类是静态类,而不能具有构造函数。