Method有数组参数,将数组对象传递给参数

时间:2016-01-14 18:45:08

标签: c# linq

我有一个与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中?

1 个答案:

答案 0 :(得分:2)

var thisObject = new ExampleObject("name", new [] {obj1, obj2, obj3}); 关键字只是用于创建数组的语法糖 - 你也可以使用数组文字,即

var thisObject = new ExampleObject("name", 
    (new [] {obj1, obj2}).Concat(specialObjects).ToArray());

一旦你这样看,你就会意识到不可能将数组用于参数列表的一部分。您必须创建一个新数组。你绝对可以使用LINQ。这是一个例子:

{{1}}

(请注意,使用这样的代码会影响性能,因为会创建几个临时对象。如果您关注性能,最好创建一个带有数组和额外参数的专用重载)。