有什么办法可以将这两个构造函数合并为一个?基本上,它们接受相同的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/

10-13 08:19