Написание только статических методов эквивалентно программированию без побочных эффектов на C #?

У меня есть два вопроса, связанных с наблюдаемым поведением статических методов C # (которое я могу неправильно интерпретировать):

Во-первых: Будет ли рекурсивный статический метод оптимизирован хвостовым вызовом в некотором смысле за счет того, как статический метод реализуется за кулисами?

Второе: Будет ли эквивалентно функциональному программированию написать все приложение со статическими методами и без переменных за пределами локальной области? Мне интересно, потому что я до сих пор не осмыслил этот термин «отсутствие побочных эффектов», который я все время слышу о функциональном программировании.

Edit: Позвольте мне упомянуть, я действительно использую и понимаю, почему и когда использовать статические методы в обычной методологии C # OO, и я понимаю, что оптимизация хвостового вызова не будет явно выполняться для рекурсивного статического метода. Тем не менее, я понимаю оптимизацию хвостового вызова как попытку остановить создание нового кадра стека при каждом проходе, и в нескольких моментах я наблюдал то, что выглядело как статический метод, выполняющийся в кадре вызывающего метода, хотя Возможно, я неверно истолковал свое наблюдение.

6
задан Dan Abramov 1 August 2011 в 14:38
поделиться