我有一个这样的函数:
public static Mesh MeshFromPolylines(List<Polyline> nurbsCurves, int type, bool weld)
{
..code..
}
然后我有重载:
public static Mesh MeshFromPolylines(Polyline[] nurbsCurves, int type, bool weld)
{
..code..
}
有没有办法在不复制粘贴相同代码的情况下编写第二个函数? 这两个函数内部都有完全相同的代码。只是区别在于输入List<Polyline>
和Polyline[]
。
如果它有签名,一个单一的方法就可以了:
public static Mesh MeshFromPolylines(IEnumerable<Polyline> nurbsCurves, int type, bool weld)
{
}
它将接受数组和列表。或者至少您可以从两个方法调用这个(如果出于某种原因需要两个具有指定参数类型的方法(。
不过,您可能需要修改方法主体,例如,要按索引获取元素,您需要执行nurbsCurves.ElementAt(i)
而不是nurbsCurves[i]
您可以将数组Polyline[]
转换为列表List<Polyline>
并调用基函数并传递列表。请检查以下示例:
public static Mesh MeshFromPolylines(Polyline[] nurbsCurves, int type, bool weld)
{
MeshFromPolylines(nurbsCurves.ToList(), type, weld);
}
请检查此数组到列表的转换。
如果使用 LINQ,则可以执行以下操作
public static Mesh MeshFromPolylines (List <Polyline> list, int type, bool weld)
{
MeshFromPolylines (list.ToArray(), type, weld);
}
您也可以以相反的方式进行,请检查此:列表。ToArray ((, Enumerable.ToList ((