使用不同类型的重载功能

  • 本文关键字:重载 功能 同类型 c#
  • 更新时间 :
  • 英文 :


我有一个这样的函数:

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 ((

最新更新