如何在params对象[]前面插入一个对象

Ste*_*eve 0 c#

public class bar:foo
{
    public bar(int something, params object[] parameters)
        :base(something, parameters) //foo will receive {int, object[]}, not what i want
    {
    }
}

public class foo
{
    public foo(params object[] parameters)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我想在传递给基类的 params 数组前面再附加一个对象。假设我称bar(1, 2, 3, 4, 5)我希望 fooreceive {1, 2, 3, 4, 5}作为参数而不是 {1, {2, 3, 4, 5}} ,这是上面的代码给我的。

ang*_*son 5

解决方案是创建一个包含第一个元素 + 原始数组元素的新数组,并将新数组传递给另一个方法。

为此,您可以创建一个包含第一个参数的新数组,然后使用Concat创建一个包含此参数和原始数组的集合,然后将该集合转回数组。

这个表达式可以做到:

new object[] { something }.Concat(parameters).ToArray()
Run Code Online (Sandbox Code Playgroud)

因此,您的构造函数定义将如下所示:

public bar(int something, params object[] parameters)
    :base(new object[] { something }.Concat(parameters).ToArray())
{
}
Run Code Online (Sandbox Code Playgroud)