2012-02-14 91 views
11

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

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

而在这段代码类实例化作为

TextStyle textParameters = new TextStyle(); 

回答

31

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

public TextStyle() 
{ 
} 

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

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

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

0

如果你没有定义其他的构造函数,就有一个隐含的空构造函数。

+3

-1;这有效地重复了Jon Skeet在40秒之前写下的内容,但重复了错别字,没有详细信息,也没有权威的参考。这个答案不会为页面添加任何值。 – 2017-04-28 12:40:31