c# - 为什么同时具有参数和多对象构造函数?

标签 c# constructor

每隔一段时间(例如 NUnit 的 TestCaseData),我会看到一个具有一个或多个构造函数的对象,如下所示:

MyObject(object arg)
MyObject(object arg1, object arg2)
MyObject(object arg1, object arg2, object arg3)
//guess they got tired of writing constructors?
MyObject(params object[] args)

但是,如果对象具有 params 构造函数,那么定义前面的构造函数有什么好处?

最佳答案

通常是为了性能。

在您的示例中,MyObject 可能分配了 1、2 或 3 个参数,因此开发人员已为此进行了优化。首先可以优化底层实现,并且在调用站点也可以传递参数而无需任何额外的内存分配。通过使用 params,编译器必须插入代码来创建一个数组,然后在调用它之前将参数分配给该数组。如果使用 1、2 或 3 个参数调用是常态,那么您可以避免这种分配。

关于c# - 为什么同时具有参数和多对象构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107025/

相关文章:

c# - 为什么在编辑器中按Play时Unity崩溃?

c# - LockBits 似乎对我的需求来说太慢了 - 替代方案?

c# - MVC 4 和 Google Charts - 如何将折线图的数据从 Controller 传递到 View ?

c++ - 类不存在默认构造函数但未默认传递

generics - F# 通用结构构造函数和错误 FS0670

c# - RazorPages Page Remote 不适用于模型

c# - 如何从 c#.net 中的文本文件中删除空行

c++ - 构造函数不能是虚拟的

c++ - 如何在没有标准库的情况下在 C++ 中为 braced-init-list 创建构造函数?

PHP - 扩展的 __construct