默认构造函数在C#中的含义是什么?

时间:2015-02-10 21:53:10

标签: c# .net oop constructor default-constructor

根据我所读到的,构造函数可以有两个含义:

  

在计算机编程语言中,术语默认构造函数可以   指的是由编译器自动生成的构造函数   在没有任何程序员定义的构造函数的情况下(例如在Java中)

  

在其他语言中(例如在C ++中),它可以是构造函数   无论如何,都不必提供任何论据   构造函数是自动生成还是使用定义的

所以在C#的上下文中,默认构造函数意味着什么,它是指自动生成的构造函数,它唯一的工作是将成员初始化为某些默认值?

6 个答案:

答案 0 :(得分:5)

在C#中,当您没有定义任何构造函数时,默认构造函数是编译器为您生成的空构造函数(没有参数)。

答案 1 :(得分:4)

根据定义,C#中的默认构造函数是具有此类签名的构造函数:

Class()
{

}

这里没有提供参数,因此编译器可以毫无疑问地调用此方法。如果你的类提供了一些其他的构造函数,那么默认的构造函数是由编译器生成的,你必须手动添加它:

Class() : this(null)
{
}

Class(object data)
{

}

在默认构造函数中,您可以为表示其状态的类定义逻辑,例如私有字段或外部组件。默认构造函数的另一个目的可以在依赖注入容器中找到,它用于正在映射的对象的默认实例化。

答案 2 :(得分:2)

C#中的默认构造函数是一个自动生成的构造函数,以防您没有提供任何构造函数。在这种情况下,编译器将添加不接受任何参数的默认公共构造函数。 但是,只要您定义了任何构造函数,默认构造函数就不再可用。

答案 3 :(得分:1)

在C#中,默认构造函数和无参数构造函数实际上是同义词。即:

public MyClass()
{
}

请注意,与C ++一样,提供参数化构造函数会删除“提供的”默认构造函数。您总是可以添加默认/无参数定义。

答案 4 :(得分:0)

默认构造函数是无参数构造函数。

请参阅:10.10.4 Default constructors

  

如果一个类包含没有实例构造函数声明,则a   默认实例构造函数是自动提供的。

答案 5 :(得分:0)

默认构造函数是无参数的,并且在类不包含实例构造函数声明时提供。

尝试MSDN