以前、Dictionary<TKey, TValue>とIEquatable<T>で実行時エラーもなくハマる問題を書きましたが、今度は類似で実行時エラーでわかる問題がありました。
class Base: IComparable<Base>{とした場合、DerivedはIComparable<Base>を実装するため、通常の比較は行えます。しかしIComparable<Derived>は実装していないため、List<Derived>.Sort()などは行えません。
}
class Derived: Base{
}
class Base<T>: IComparable<T> where T: Base{とかやり出すか、素直にIComparableに切り替えるか。
}
class Derived: Base<Derived>{
}
0 件のコメント:
コメントを投稿