我正在尝试编写 Linq MinBy 扩展方法
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 的 Min 函数回答了一个不同的问题(这是最小的正方形)
> new List<int>{-5,-2,3}.Min(x => x*x)
4