Что такое '=>'? (Вопрос о грамматике С#)

Я смотрел учебник для 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 выбрана в левой панели.
  • Введите => в поле "Поиск"
  • Первый элемент в списке теперь - справочная статья, в которой вы нуждаетесь.