每隔一段时间(例如 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/