価値観の短い履歴を保持する必要があります。そのため、最大アイテム数のリストが必要です。そして、いっぱいになっても新しい追加を受け入れてほしいです。その場合、追加した最も古いアイテムを失ってもらいたいです。この目的に合ったクラスは見つかりませんでした。後でメソッドを追加することは確かですが、今のところ必要なものがあります。
だからあなたへの私の最初の質問は:それは正しいコードですか:http://pastebin.com/0BCbyNqJ そのクラスはあなたにとって十分きれいに見えますか?
そして私の2番目の質問は、私が投げているこれらの例外についてです。
/// <summary>
/// Oldest item added to the list
/// </summary>
public T First
{
get
{
if (_head < 0)
throw new IndexOutOfRangeException("The list is empty");
if (_firstRoundDone)
return _array[(_head + 1) % _max];
else
return _array[0];
}
}
First
リストに何かを追加する前に、Last
を呼び出してCount
nullを返したいと思います。それはもっと理にかなっていると思います。しかし、戻り値の型はintまたはTであり、のような制約を追加したくないので、その方法がわかりませんwhere T:Nullable
。解決策が見当たらないので、結局のところ、例外が最もエレガントな方法ではないかと思います。または、またはのようなメソッドを実装する必要がGetFirst(out T first)
ありTryGetFirst(out T)
ますか?