方法有数组参数,将数组对象传递给参数
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());
(请注意,使用这样的代码会降低性能,因为会创建多个临时对象。如果您担心性能,最好创建一个采用数组和额外参数的专用重载).
我有一个构造函数,其签名与 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());
(请注意,使用这样的代码会降低性能,因为会创建多个临时对象。如果您担心性能,最好创建一个采用数组和额外参数的专用重载).