На шарпе функция выглядит аццким матаном, который в первый момент не знаешь, куда приложить :) Все же чистый (извините за каламбур) ФП — не для мейнстрима
Забавно, если нужна анонимная рекурсия.
Но в C# это несложно обойти, просто объявив переменную заранее.
Так что это становится просто интересным упражнением.
Мне лично больше нравится arguments.callee в JS, он одновременно и понятнее и проще.
В c# теоретически может быть полезно для того, чтобы вообще избежать объявления переменной, а, если не ошибаюсь, в 4-й версии можно будет немного сократить запись за счёт улучшенного вывода типов. Хотя выглядеть менее матаном от этого не будет.
За arguments.callee спасибо, раньше этого не знал.
Вопрос «Зачем это нужно?» в программировании — в корне неправильный (независимо от предмета обсуждения). Правильный вопрос — «Как это можно использовать?».
> Когда мне впервые задали вопрос о том может ли существовать функция вида Func без использования конструкций вида default(T) он поверг меня в глубокий когнитивный диссонанс.
Фигня вопрос:
T Fix(Func func){
throw new Exception(":)");
}
Комбинатор неподвижной точки