我有一个与ExampleObject(string name, params object[])
具有类似签名的构造函数。
我将项目传递给此构造函数的常用过程是:
var thisObject = new ExampleObject("name", obj1, obj2, obj3);
无论如何,我可以初始化一个单独的对象数组,并通过LINQ或其他一些魔法将该数组传递给构造函数IN除了我通常的方式吗?
理想的结果:
object[] specialObjects = {new object("specObj1"), new object("specObject2")}
var thisObject = new ExampleObject("name", obj1, obj2, specialObjects...
我是否需要使用LINQ的Enumerable,ForEach或者我完全不知道的东西,或者这样的东西不可行,我应该将obj1和obj2包含在specialObjects中?
答案 0 :(得分:2)
var thisObject = new ExampleObject("name", new [] {obj1, obj2, obj3});
关键字只是用于创建数组的语法糖 - 你也可以使用数组文字,即
var thisObject = new ExampleObject("name",
(new [] {obj1, obj2}).Concat(specialObjects).ToArray());
一旦你这样看,你就会意识到不可能将数组用于参数列表的一部分。您必须创建一个新数组。你绝对可以使用LINQ。这是一个例子:
{{1}}
(请注意,使用这样的代码会影响性能,因为会创建几个临时对象。如果您关注性能,最好创建一个带有数组和额外参数的专用重载)。