2012-06-10 4 views
2

Я использую lambdas в C# много (LINQ из многих вкусов, сильно типизированных помощников в ASP.NET MVC, AutoMapper API и т. Д.), Но я не могу начать использовать функциональные возможности C# в своем собственном коде, потому что могу «Не знаю, какие крутые вещи я могу с ними поделать. Я использую их интуитивно большую часть времени.Как понять все функциональные возможности C#?

Есть ли какое-либо справочное или быстрое (но полное) руководство об этом. Я не ищу ссылку MSDN, но для быстрого объяснения всех функциональных возможностей C# в целом. Если его можно сузить для списка с несколькими ссылками на сообщения в блоге - это тоже приемлемо.

Обновление после вопроса было закрыто: По-моему, мое длинное объяснение не было ясным, поэтому я попытаюсь сузить его: мне нужен список понятий, которые я могу использовать для написания собственного кода (не потребляйте другие API-интерфейсы). Спасибо за то, что мне нужно, спасибо.

+0

Используйте их. Ага. Это * * трюк. –

+1

Этот вопрос немного напоминает просить полного руководства о том, как использовать ваши ноги. Тема обширна и возможности бесконечны ... – flq

+1

Если вы еще этого не сделали, используйте [ReSharper] (http://www.jetbrains.com/resharper/). Следуйте рекомендациям, и вы узнаете. –

ответ

5

Вот хорошая статья CodeProject, в которой объясняются функциональные возможности, введенные в C#. Он также легко понять примеры для каждой функции:

Functional programming in C#

В статье приводятся пояснения и примеры для функций и значений первого класса:

  • типы функций - делегаты, общие типы функций, предикаты , действия
  • Значения функций - функции хранения и передачи в качестве параметров
  • Арифметические функции - добавление и вычитание функций

После этого, статья говорит о функциональном программировании на C#, покрывающей эти очки:

  • Использование функций для создания родовых конструкций
  • Использование LINQ
  • функций высокого порядка - функции, которые обрабатывают другие функции, функциональный состав
  • Асинхронные функции - объясняет BeginInvoke, IsCompleted, EndInvoke и с использованием асинхронных функций с обратными вызовами
  • Кортежи - динамические структуры данных
  • Замыкания - объясняет объем переменных в делегатов и лямбда-функциям, а также объясняет, обмен данными и кэширования
  • рекурсии с использованием функций высокого порядка
  • частичных функций - сокращение числа функции аргументы, используя значения по умолчанию
  • Карри функции - нарушающей функции аргумента N в N функции одного аргумента
+0

Хорошая статья, похоже на хорошее начало в вопросе – flq

+0

Пожалуйста, подумайте о том, чтобы добавить резюме (например, пули основных концепций/конструкций) и/или соответствующие выдержки «простые ссылки» лучше, чем комментарии. –

0

Просто добавив к статье, связанной с помощью Ова, потому что я не видел этот аспект экс неявно покрыто:

Использование функциональных конструкций позволяет отделить последовательность выполнения от последовательности того, как записывается код. Это связано с тем, что вызов определенной лямбды может произойти в какой-то другой момент времени, чем время, когда программа узнает лямбду.

Иногда это может быть немного неинтуитивным (отложенное выполнение в LINQ), но в целом дает вам свободу поддерживать связанный код вместе, хотя он работает в разное время.

Смежные вопросы