Рассмотрим
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
и(System.Collections.Generic.IEnumerable , System.Func ) ' ' System.Linq.Enumerable.Sum
) '(System.Collections.Generic.IEnumerable , System.Func
Я не понимаю, какая информация s = > GetValue (s)
передают компилятору, что просто GetValue
не делает - не является ли последний синтаксическим сахаром для первого?