когда я должен использовать лямбда-выражения, которые поставляются с C # 3.0? - PullRequest
7 голосов
/ 12 января 2010

Хай, ребята,

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

  • когда я должен использовать лямбда-выражение который поставляется с C # 3.0?

Ответы [ 4 ]

5 голосов
/ 12 января 2010

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

ожидайте использования

del myDelegate = delegate(int x){return x*x; };
int j = myDelegate(5); //j = 25

Вы можете написать

del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
2 голосов
/ 12 января 2010

Я не думаю, что существует общее правило, когда ваши должны использовать их, но если я смотрю на себя, я склонен использовать их всякий раз, когда я использую анонимные методы. Чаще всего это происходит при порождении некоторого кода в новом потоке с использованием ThreadPool или при выполнении запросов LINQ.

Пример ThreadPool:

ThreadPool.QueueUserWorkItem(state => {
    // the code to run on separate thread goes here
});

LINQ:

var myItems = GetSomeIEnumerable()
                  .Where(o => o.SomeProperty.Equals("some value"));
                  .OrderBy(o => o.SomeOtherProperty);
1 голос
/ 12 января 2010

Краткий ответ: прочитайте " C # подробно " от самого популярного сотрудника SO Jon Skeet . Это отличная книга, и вы узнаете все о новых возможностях C # 3, особенно когда их использовать, включая лямбда-выражения.

0 голосов
/ 12 января 2010

По крайней мере, не использовать для событий а-ля

myUserControl.Loaded += (sender, e) => DoSomething(); // coding horror!!!1 :-P

потому что на данный момент вы все еще не можете отписаться и почистить вещи так легко. Конечно, есть фабрики WeakEventHandler и тому подобное, но все же лучше удалить все обработчики событий вручную, как только UserControl будет удален из его родителя.

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

...