当前位置: 首页 > 知识库问答 >
问题:

为什么不总是有默认构造函数[重复]

柯阳曦
2023-03-14

在C#中,当我创建一个空类时,它提供了一个默认的构造函数,但是当我提供一个带有参数的构造函数时,默认的构造函数不再被创建。

我的问题是:

  1. 为什么编译器不再给我默认的构造函数呢

这些问题来自于WCF,我需要默认构造函数,但也希望能够为构造函数提供值,并且不必每次都放置默认构造函数,而且我不认为未使用的默认构造函数会使很多开销。

共有3个答案

扶杜吟
2023-03-14

默认构造函数存在于,嗯。。。违约但是,如果您创建自己的参数化构造函数,那么编译器会假定您想要使用该构造函数,并且不再发出默认构造函数。

如果希望有一个默认值与WCF一起使用,则必须指定它。在它中,如果愿意,可以使用一些默认值调用参数化构造函数。

西门庆
2023-03-14

它没有设置。

在某些情况下,默认构造函数是强制指定数据的契约的一种方式。

栾英资
2023-03-14

拥有自定义构造函数(通常)意味着使用通过构造函数参数提供的一些自定义信息初始化对象的内部状态。在这种情况下,如果仍然使用默认构造函数,那么初始状态是什么?

如果您没有自定义构造函数,那么假设您只使用默认构造函数就可以了,因为没有要初始化的内部状态。

 类似资料:
  • 若类有参数化的构造函数,为什么Java不提供默认构造函数?考虑下面的例子 这里我明确需要添加默认构造函数。有什么原因,为什么Java没有为具有参数化构造函数的类提供默认构造函数?

  • 问题内容: 如果父类中有带参数的构造函数,为什么需要默认构造函数(显式) 这将是一个错误。 问题答案: 这里有两个方面的工作: 如果 确实 明确指定了构造函数(如中所述),则Java编译器将 不会 为您创建无参数构造函数。 如果您未明确指定构造函数(如所示),则Java编译器将为您创建一个无参数的构造函数,如下所示: (可访问性取决于类本身的可访问性。) 试图调用超类无参数构造函数-因此它必须存在

  • 当Java中给出参数构造函数时,为什么默认的无参数构造函数会失败? 这个设计有什么意义? 例如:

  • 隐式默认构造函数有一个空主体和一个空初始值设定项列表(未定义的原始类型,默认构造函数用于用户定义的类型)。 这篇帖子说 确实进行了成员级值初始化,但在进行初始化时调用默认构造函数有什么意义 ? 是否调用隐式默认构造函数,以确保调用用户定义类型(可能具有非平凡的默认构造函数)的默认构造函数? 使现代化 似乎在调用编译器生成的隐式默认构造函数后,对象可能无法一致实例化,即未定义基元类型,并且用户定义的

  • 我有以下2个类 然后运行 或 始终给予 为什么会出现这种情况?乍一看,在这两种场景中,我都假设只调用构造函数,因此唯一的输出是 但这显然是错误的。

  • 问题内容: 默认构造函数到底是什么?你能告诉我以下哪个是默认构造函数,它与其他构造函数有何不同? 问题答案: 他们都不是。如果定义,则不是默认值。 除非你定义另一个构造函数,否则默认构造函数是自动生成的无参数构造函数。任何未初始化的字段都将设置为其默认值。对于你的榜样,它看起来像这样假设的类型String,int以及int,那类本身是公共的: 这与 完全没有构造函数。但是,如果定义至少一个构造函数