有名な C# ライブラリC5のインターバル コレクション拡張を作成しています。インターフェイスは、同等のエンドポイント (無関係なメンバーを削除) で間隔を定義します。IInterval
public interface IInterval<T> where T : IComparable<T>
{
T Low { get; }
T High { get; }
}
間隔エンドポイントは、整数、日付、さらには文字列など、比較可能なものであれば何でもよいため、これは一般的にうまく機能します。
ただし、間隔の長さを計算できると便利な場合があります。間隔[3:5)
の期間は 2 で、間隔[1PM, 9PM)
の期間は 8 時間です。これは、要素の距離ではなく要素の順序のみを提供するため、比較対象では不可能です。たとえば、2 つの文字列間の距離を提供することは困難です。エンドポイント タイプは基本的に、間隔でスケーリングされた値でなければなりません。
のようなインターフェイスはありますか?これIComparable<T>
により、一般的にエンドポイントを比較できますが、2 つのエンドポイントを減算して期間を取得したり、低エンドポイントに期間を追加して、継承インターフェイスに使用できる高エンドポイントを取得したりすることもできます。IDurationInterval<T> : IInterval<T>
例えば?
またはより簡潔に: 間隔でスケーリングされた値のインターフェイスはありますか?