Является ли хорошей идеей использовать лямбда-выражение вместо делегатов? - PullRequest
1 голос
/ 16 мая 2011

Лямбда-выражение может использоваться вместо делегатов , я не уверен, что это хороший способ, я думаю, что это более удобно, чем делегаты, но я не уверен, чтоэто хорошая идея.

Хорошо ли использовать лямбда-выражение вместо делегатов ?

Ответы [ 4 ]

10 голосов
/ 16 мая 2011

С точки зрения компилятора это не имеет значения.

С точки зрения разработчика, выражения lamba улучшают читабельность в большинстве случаев.

8 голосов
/ 16 мая 2011

Напишите код для себя и других разработчиков, а не для своего компьютера.

Если лямбда-выражение легче понять в вашем случае, это хороший выбор.

Большинство лямбда-выражений будутв любом случае скомпилировано для делегатов.(Исключая деревья выражений)

4 голосов
/ 17 мая 2011

Вы можете создать экземпляр делегата несколькими различными способами:

  • Использование лямбда-выражения C # 3:

    Func<int> getFive = () => 5;
    
  • Использование C #2 Синтаксис анонимного метода:

    Func<int> getFive = delegate { return 5 };
    
  • Использование неанонимного метода (доступно с C # 1):

    int GetFive()
    {
        return 5;
    }
    …
    Func<int> getFive = GetFive;
    

Я думаю, что каждый

Синтаксис delegate { } имеет то преимущество, что вам не нужно объявлять параметры, если они вам не нужны.

Лямбда-выражения очень лаконичны иможет быть переведен в выражения вместо делегатов, что очень полезно для LINQ-to-some-DB и означает, что вы можете использовать тот же синтаксис для запроса структур и баз данных в памяти.

Использование неанонимных методовозначает, что вы можете легко использовать их повторно, а также подходит для длинных методов.

Все приведенные выше случаи переведены в эквивалентный код.Единственная разница в том, является ли метод видимым для вас.

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

1 голос
/ 16 мая 2011

yes.вы можете делать делегатов на lambda, уменьшать количество строк кода и делать код читаемым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...