1
接下来方法是一类内部的自List继承<类B>:重载以便与(PARAMS T []),(T PARAM)
// 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;
}
有时有必要更新项目性质(例如公共INT ID)在不同的索引,有时我只需要一个开始索引,并从它更新到列表的末尾。我想出了这个简单的两种方法,一切都很好,直到我需要在方法B中使用一个简单的参数为params
,它被用作方法A的start
。我知道这是因为他们共享相同的名称,我仍然想要去测试。
问题:
- 什么是处理这类案件的最好方法? (即你已经为(params T [])和(T param))重载了方法。我知道一个简单的名称更改就足够了,但我想要更深入的意见/解决方案。
- 重载分辨率是如何完成的?
它并不真正清楚你在找什么在这里,是诚实的。使用更清晰的名称,例如'UpdateItemRange' vs'UpdateItemsByIndex'似乎是最好的主意。 –
你可以通过包含参数名来消除歧义......但是......坦率地说,我会选择更好的方法名......或者让它不是“params” - 在编译时你会多久知道参数?不确定'params'在这里是有用的...... –
考虑到MarcGravell和JonSkeet的观点,我已经做出了适当的改变,一切都变得更加简洁。感谢这两位MVP,我真的很感谢你的帮助,而且我真的很喜欢这两者。我将自己搜索更多关于这个重载解决方案的信息。 – Ruri