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}} ,这是上面的代码给我的。
解决方案是创建一个包含第一个元素 + 原始数组元素的新数组,并将新数组传递给另一个方法。
为此,您可以创建一个包含第一个参数的新数组,然后使用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)