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