Рассмотрим
void Main()
{
var list = new[] {"1", "2", "3"};
list.Sum(GetValue); //error CS0121
list.Sum(s => GetValue(s)); //works !
}
double GetValue(string s)
{
double val;
double.TryParse(s, out val);
return val;
}
Описание ошибки CS0121:
Вызов неоднозначен между следующими методами или свойствами:
'System.Linq.Enumerable.Sum<string>(System.Collections.Generic.IEnumerable<string>, System.Func<string,decimal>)'
и'System.Linq.Enumerable.Sum<string>(System.Collections.Generic.IEnumerable<string>, System.Func<string,decimal?>
)
Что я не понимаю, какая информация s => GetValue(s)
дает компилятору, что просто GetValue
нет - не последний синтаксический сахар для первого?