重载顺序(params T []),(T param)

时间:2017-04-24 16:36:47

标签: c# parameters overloading

接下来的方法是在继承自List<的类A中。 B类>:

// Method A: Updates from specified start to end of list.
public void UpdateItems(int start = 0) {
    UpdateItems (
        Enumerable.Range (start, this.Count - start).ToArray ()
    );
}

// Method B: Updates separate indexes when necessary.
public void UpdateItems(params int[] indexes) {
    foreach (int i in indexes)
        this [i].id = i + 1;
}

有时需要在不同的索引上更新项属性(例如public int id),有时我只需要一个start-index并从它更新到列表的末尾。我想出了这两个简单的方法,一切都很好,直到我需要在方法B中使用一个简单的params参数,它被用作方法A的start。我知道这是为了他们我仍然想测试一下这个名字。

问题:

  • 处理此类案件的最佳方法是什么? (即你有(params T [])和(T param)的重载方法。我知道简单的名称更改就足够了,但我想要更深入的意见/解决方案。
  • 如何完成重载决策?

1 个答案:

答案 0 :(得分:1)

实际上你可以用param名称调用方法,例如

UpdateItems(indexes: 1); //Will call method with params
UpdateItems(1); //Will call method with start index

但在我看来,这不是一个好的解决方案。最好有两种不同名称的方法。

使用params调用方法的另一种方法是将整数数组作为方法参数传递

UpdateItems(new [] {1});