特定のセレクターで最小アイテムを見つける拡張メソッドに取り組んでいます。コードの下
public static T MinBy<T, K>(this IEnumerable<T> src, Func<T, K> selector) where K : struct, IComparable, IConvertible
{
var min = default(K);
T minItem = default(T);
foreach (var item in src)
{
var current = selector(item);
if (current < min)
{
min = current;
minItem = item;
}
}
return minItem;
}
エラーが発生しますError Operator '<' cannot be applied to operands of type 'K' and 'K'
。しかし、一般的な制約 K を指定しましたStruct and IComparable
。これですべての数値データ型が満足できると思います。
では、なぜこれは無効な操作なのですか?