我有一個類爲SortelList
私人字段:此列表中的每個元素都有一個string
作爲鍵值和自定義數據。當我把我的類的Update
方法,我指定的密鑰和數據,以及:如何在自定義方法中處理錯誤的參數值?
- 如果列表中不包含指定鍵,然後一個新的條目添加到列表中;
否則,當前數據用指定的數據進行更新(因此不會引發異常)。
public class Cache { private SortedList<string, Data> _list; // ... constructors and other methods public void Update(string key, Data value, int number) { Data data; if (this._list.TryGetValue(key, out data)) { // update data using value and number // // ... _list[key] = data; // overwrite the previous data with the updated data } else { _list.Add(key, value); } } }
因此,此類從未拋出異常,即使您指定的重複鍵。但number
參數的值必須是正值,那麼應該忽略小於或等於零的值。有什麼更好的方法來排除這些值?
- 我可以少忽略值小於或等於零:
if (number <= 0) return;
- 我可以使
Update
方法返回一個布爾值,所以:if (number <= 0) return false;
- 我可以使
Update
方法拋出一個異常時,數量不積極。
如果允許否定,並且應該忽略,則忽略。如果否定是錯誤,則可以通過使數字無符號來消除可能性,使用代碼合約確保它或拋出異常。 – 2012-02-17 11:41:07
恕我直言,似乎沒有「更好的方式」來這個所有選項,你認爲是可行的,都取決於你喜歡的代碼行爲。 – 2012-02-17 11:46:34
@JoachimIsaksson不要忘記,一個uint的最大值是一個int的兩倍,所以如果你使用它,你仍然必須檢查它是否小於int.MaxValue,或者如果你嘗試,你可能會遇到錯誤並將該值轉換爲int。它也會允許爲零。 – 2012-02-17 11:46:34