【问题标题】:Overloading function by using different type使用不同类型的重载函数
【发布时间】:2017-07-02 20:25:30
【问题描述】:

我有这样的功能:

 public static Mesh MeshFromPolylines(List<Polyline> nurbsCurves, int type, bool weld) 
{ 
..code.. 
}

然后我有重载:

 public static Mesh MeshFromPolylines(Polyline[] nurbsCurves, int type, bool weld) 
{ 
..code.. 
}

有没有办法在不复制粘贴相同代码的情况下编写第二个函数? 这两个函数内部的代码完全相同。只是区别在于输入List&lt;Polyline&gt;Polyline[]

【问题讨论】:

标签: c#


【解决方案1】:

如果有签名,一个方法就可以工作:

public static Mesh MeshFromPolylines(IEnumerable<Polyline> nurbsCurves, int type, bool weld) 
{ 
}

它将接受数组和列表。或者至少你可以从你的两个方法中调用这个(如果由于某种原因你需要两个具有指定参数类型的方法)。

您可能需要修改方法主体,例如要按索引获取元素,您需要使用nurbsCurves.ElementAt(i) 而不是nurbsCurves[i]

【讨论】:

  • 感谢是一种魅力,我不需要改变任何东西。
【解决方案2】:

您可以将 Array Polyline[] 转换为 List List&lt;Polyline&gt; 并调用基本函数并传递 List。请查看以下示例:

public static Mesh MeshFromPolylines(Polyline[] nurbsCurves, int type, bool weld) 
{ 
    MeshFromPolylines(nurbsCurves.ToList(), type, weld);
}

Please check this for Array to List conversion.

【讨论】:

    【解决方案3】:

    如果你使用 LINQ,你可以这样做

    public static Mesh MeshFromPolylines  (List <Polyline> list, int type, bool weld)
    {
        MeshFromPolylines (list.ToArray(), type, weld);
    }
    

    你也可以做相反的事情,请检查这个:List .ToArray ()Enumerable.ToList ()

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多