Немного не догоняю.
Вот в GroupBy описано, что я могу подать на вход функцию System.Func<TSource, TKey>.
Тем не менее, если я подам функцию с 3 и более элементами, то компилятор ее успешно проглотит.
Хотя в описании метода написано, что ожидается функция, которая принимает 1 элемент. Так и должно быть или я что-то путаю?
Ну допустим такой глупый пример:
new[] {"1", "2", "3"}.GroupBy(x => Test(x, "1", "1"));
static string Test(string p1, string p2, string p3)
{
return "";
}
Хотя написано, что требуется функция 1 параметра:
Ваша функция от одного аргумента (x), и возвращает одно значение. Так что это всё ещё Func<T, U>.
Действительно, лямбда-выражение
x => Test(x, "1", "1")
можно представить себе как такую функцию:
string f(string x)
{
return Test(x, "1", "1");
}
и GroupBy запишется как
new[] {"1", "2", "3"}.GroupBy(f);
Мы видим, что функция f от одного строкового аргумента, а то, что внутри неё вызывается функция от трёх аргументов, не играет никакой роли.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости