私はプライベートフィールドとして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
引数の値は正でなければならず、ゼロ以下の値は無視する必要があります。これらの値を除外するより良い方法は何ですか?
- I未満またはゼロに等しい値を無視することができ:
if (number <= 0) return;
- を私は
Update
方法がそう、ブール値を返す作ることができる:if (number <= 0) return false;
- Iは場合
Update
メソッドが例外をスローすることができ正の数ではない。上述のよう
ネガティブが許可されていて無視するだけの場合は無視してください。ネガティブがエラーの場合は、番号を符号なしにすることによってその可能性を排除するか、コード契約を使用して確実にするか、例外をスローします。 –
IMHOあなたが考えているすべての選択肢は実行可能で、このコードから好む振る舞いに依存します。 –
@JoachimIsaksson uintの最大値がintの値の2倍であることを忘れないでください。それを使用する場合は、int.MaxValueより小さいかどうかをチェックする必要があります。値をintにキャストします。また、ゼロを許容する。 –