每隔一段时间(例如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构造函数,那么定义之前的构造函数有什么好处呢?
答案 0 :(得分:6)
这通常是为了表现。
在您的示例中,可能是MyObject
分配1,2或3个参数的情况,因此开发人员已针对此进行了优化。首先,可以优化底层实现,并且还可以在调用站点处传递参数而无需任何额外的存储器分配。通过使用params
,编译器必须插入代码来创建数组,然后在调用之前将参数分配给该数组。如果它是使用1,2或3个参数调用的标准,那么您可以避免这种分配。