我正在尝试编写一个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