有什么办法可以将这两个构造函数合并为一个?基本上,它们接受相同的Point3D
类型数组。
public Curve(int degree, params Point3D[] points) {}
public Curve(int degree, IList<Point3D> points) {}
谢谢。
最佳答案
如果我对您的理解正确,那么问题在于您不能简单地执行以下操作:
public Curve(int degree, params Point3D[] points)
: this(degree, points) //want to chain to (int, IList<Point3D>) constructor
{
}
public Curve(int degree, IList<Point3D> points)
{
}
因为您收到以下编译时错误:
Error CS0516 Constructor 'Curve.Curve(int, params int[])' cannot call itself".
您可以通过简单地将引用转换为适当的类型来解决此问题
public Curve(int degree, params Point3D[] points)
: this(degree, (IList<Point3D>)points)
{
}
之所以可行,是因为数组
T[]
实现了IList<T>
。关于c# - 合并参数和IList <T>构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39206692/