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

本文关键字:数组 参数 对象 方法 | 更新日期: 2023-09-27 18:30:18

我有一个与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 包含在 specialObject 中?

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

params 关键字只是用于创建数组的语法糖 - 您也可以使用数组文字来执行此操作,即

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

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

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

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