LinqMinBy拡張メソッドをコーディングしようとしています
public static class Extensions
{
public static T MinBy<T>(this IEnumerable<T> source, Func<T,int> selector)
{
T min;
int? minKey = null;
foreach (var x in source)
{
var key = selector(x);
if (minKey == null || key < minKey)
{
minKey = key;
min = x;
}
}
if (minKey == null)
{
throw new ArgumentException("source should not be empty");
}
return min;
}
}
私の論理は正しくて読みやすいと思います。しかし、ビルドエラーが発生します
割り当てられていないローカル変数「min」の使用
これについて私は何ができますか?変数が割り当てられているかどうかをテストできますか?
明確化:MinBy関数は次の質問に答えることができます。最小の平方を持つ数字[-5、-2、3]はどれですか?
> new List<int>{-5,-2,3}.MinBy(x => x*x)
-2
.NETの最小関数は別の質問に答えます(これは平方の最小値です)
> new List<int>{-5,-2,3}.Min(x => x*x)
4