为什么有params和muti-object构造函数?

时间:2014-11-24 14:23:55

标签: 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构造函数,那么定义之前的构造函数有什么好处呢?

1 个答案:

答案 0 :(得分:6)

这通常是为了表现。

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