没有构造函数的C#类

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

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

在代码中,这个类被实例化为

 TextStyle textParameters = new TextStyle(); 

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

 public TextStyle() { } 

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

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

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

如果不定义其他构造函数,则存在一个隐含的空构造函数。