方法有数组参数,将数组对象传递给参数

Method has array param, passing array objects to parameter

我有一个构造函数,其签名与 ExampleObject(string name, params object[]) 相似。

我通常将项目传递给此构造函数的过程是:

var thisObject = new ExampleObject("name", obj1, obj2, obj3);

我是否可以通过 LINQ 或其他魔术来初始化一个单独的对象数组,并将该数组传递给构造函数,除了我通常这样做的方式之外?

理想结果:

object[] specialObjects = {new object("specObj1"), new object("specObject2")}
var thisObject = new ExampleObject("name", obj1, obj2, specialObjects...

我是否需要使用 LINQ 的 Enumerable、ForEach 或我完全不知道的东西,或者这样的东西不可行并且我应该将 obj1 和 obj2 包含到 specialObjects 中?

params 关键字只是用于创建数组的语法糖 - 您也可以使用数组文字来实现,即

var thisObject = new ExampleObject("name", new [] {obj1, obj2, obj3});

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

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

(请注意,使用这样的代码会降低性能,因为会创建多个临时对象。如果您担心性能,最好创建一个采用数组和额外参数的专用重载).