如何将未确定数量的参数传递给基础构造函数?

时间:2015-07-18 21:48:16

标签: c# inheritance constructor arguments

如果可以的话,应该替换%PARAMS%

class ParentClass
{
    public BaseClass( params int[] intList )
    { (...) }
}

class ChildClass : BaseClass
{
    public ChildClass( params int[] intList ) : base( %PARAMS% )
    { (...) }
}

PS:对不起,如果是一个新手问题,我刚开始编写C#。

2 个答案:

答案 0 :(得分:1)

尝试

public ChildClass( params int[] intList ) : base( intList )

10.5.1.4 Parameter arrays(强调我的):

  

参数数组允许在方法调用中以两种方式之一指定参数:

     
      
  • 为参数数组提供的参数可以是可隐式转换的类型的单个表达式(第6.1节)到参数数组类型。在这种情况下,参数数组的作用就像一个值参数。
  •   
  • 或者,调用可以为参数数组指定零个或多个参数,其中每个参数是一个可隐式转换的类型的表达式(第6.1节)到参数数组的元素类型。在这种情况下,调用创建参数数组类型的实例,其长度对应于参数的数量,使用给定的参数值初始化数组实例的元素,并使用新创建的数组实例作为实际参数。 / LI>   

所以如果有一个功能:

 void Function(params int[] list) {  }

可以用不同的方式调用它:

Function(0, 1, 2, 3);
Function(new int[] { 0, 1, 2, 3 });
var a = new int[] { 0, 1, 2, 3 };
Function(a);
ChildClass c = new ChildClass(1, 2, 3);

答案 1 :(得分:0)

这是否符合您的需求?

class ParentClass
{
    public BaseClass( params int[] ints )
    {  }
}

class ChildClass : BaseClass
{
    public ChildClass( params int[] ints ) : base( ints )
    {  }
}

或者这个:

class ParentClass
{
    public BaseClass( IEnumerable<int> ints )
    {  }
}

class ChildClass : BaseClass
{
    public ChildClass( IEnumerable<int> ints ) : base( ints )
    {  }
}