Что такое '=>'? (Вопрос о грамматике С#)
Я смотрел учебник для Silverlight, и я встретил незнакомое выражение
в примере кода.
что такое = > ?
как это называется? не могли бы вы предоставить мне ссылку?
Я не мог найти его, потому что это специальные символы.
код:
var ctx = new EventManagerDomainContext();
ctx.Events.Add(newEvent);
ctx.SubmitChanges((op) =>
{
if (!op.HasError)
{
NavigateToEditEvent(newEvent.EventID);
}
}, null);
Ответы
Ответ 1
Лямбда-оператор:
Выражение лямбда представляет собой анонимную функцию которую вы можете использовать для создания делегаты или типы выражений. Используя лямбда-выражения, вы можете записывать локальные функции, которые могут передаваться в качестве аргументов или возвращаться как значение вызовов функций...
ура!
Ответ 2
Это выражение лямбда.
Если вы знакомы с анонимными методами с С# 2, лямбда-выражения в основном похожи, но более кратки. Таким образом, код, который у вас есть, можно написать следующим образом с помощью анонимного метода:
var ctx = new EventManagerDomainContext();
ctx.Events.Add(newEvent);
ctx.SubmitChanges(delegate(Operation op)
{
if (!op.HasError)
{
NavigateToEditEvent(newEvent.EventID);
}
}, null);
Аспекты анонимных методов, таких как поведение захваченных переменных, одинаковы для лямбда-выражений. Лямбда-выражения и анонимные методы коллективно называются анонимными функциями.
Однако есть несколько отличий:
- Лямбда-выражения могут быть преобразованы в деревья выражений, а также делегаты.
-
Лямбда-выражения имеют несколько ярлыков, чтобы сделать их более краткими:
- Если компилятор может вывести типы параметров, вам не нужно указывать их
- Если тело представляет собой единый оператор, вам не нужно вставлять его в фигурные скобки, и вы можете опустить "возвращаемую" часть оператора return
- Если у вас есть один параметр с выведенным типом, вы можете пропустить скобки
Объединяя их, вы получаете такие вещи, как:
IEnumerable<string> names = people.Select(person => person.Name);
-
Лямбда-выражения не поддерживают форму "Меня не волнует, сколько параметров существует", например анонимных методов, например
EventHandler x = delegate { Console.WriteLine("I was called"); };
Ответ 3
Я не мог найти его, потому что это специальные символы.
Иногда старомодные способы являются лучшими. Это сработало для меня:
- Запустите Visual Studio 2008 или более позднюю версию
- Хит F1
- После того, как появится окно справки по документам справки, убедитесь, что вкладка
Index
выбрана в левой панели.
- Введите
=>
в поле "Поиск"
- Первый элемент в списке теперь - справочная статья, в которой вы нуждаетесь.