Что означает «=>»?

Вопрос:Простите меня, если это кричит новичок, но что означает => в С#? Я был на презентации на прошлой неделе, и этот оператор (я думаю) использовался в контексте ORM. Я не обращал внимания на специфику синтаксиса, пока не вернусь к своим заметкам. Лучший ответ: В С# lambda operator написано "= > " (обычно произносится " переходит

Вопрос:

Простите меня, если это кричит новичок, но что означает => в С#? Я был на презентации на прошлой неделе, и этот оператор (я думаю) использовался в контексте ORM. Я не обращал внимания на специфику синтаксиса, пока не вернусь к своим заметкам.

Лучший ответ:

В С# lambda operator написано “= > ” (обычно произносится “ переходит в“, когда читается вслух). Это означает, что аргументы слева передаются в блок кода (лямбда-функция/анонимный делегат) справа.

Итак, если у вас есть Func или Action (или любой из их двоюродных братьев с большим количеством параметров типа), вы можете назначить им выражение лямбда, а не создавать экземпляр делегата или иметь отдельный метод для отложенной обработки:

//creates a Func that can be called later Func<int,bool> f = i => i <= 10; //calls the function with 12 substituted as the parameter bool ret = f(12); Ответ №1

Поскольку никто еще не упомянул об этом, в VB.NET вы должны использовать ключевое слово function вместо = > , например:

dim func = function() true ‘or dim func1 = function(x, y) x + y dim result = func() ‘ result is True dim result1 = func1(5, 2) ‘ result is 7 Ответ №2

Это сокращение для объявления lambda.

i => i++

(вроде) такой же, как и запись:

delegate(int i) { i++; }

В контексте:

void DoSomething(Action<int> doSomething) { doSomething(1); } DoSomething(delegate(int i) { i++; }); //declares an anonymous method //and passes it to DoSomething

который (вроде) такой же, как и запись:

void increment(int i) { i++; }

Просто не указывая имени, он позволяет объявить функцию в строке, известную как “анонимная” функция.

Ответ №3

Когда говорят вслух, оператор лямбда (переходит на), который помогает определить анонимный делегат, который вы определяете в лямбда.

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

this.Loaded += (o, e) => { // code }

Вы определили метод, обрабатывающий событие Loaded анонимно (у него нет имени), используя выражение лямбда. Он будет читать как “o, e переходит в… определение метода с помощью foo”.

Ответ №4

Это “лямбда-оператор”, и вы читаете его как “идет”. Скажем, у вас было утверждение:

doSomething(x => x + » hi»);

Вы можете заменить “= > ” в своем уме следующим образом:

doSomething(delegate (string x) { return x + » hi» });

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

Ответ №5

Это лямбда-оператор, часть выражения лямбда.

Все лямбда-выражения используют лямбда operator = > , который считывается как “идет к”. Левая сторона лямбды оператор задает ввод параметры (если есть) и правую сторону содержит выражение или утверждение блок. Лямбда-выражение x = > x * x читается “x переходит в x раз x”.

Ответ №6

Синтаксис для объявления анонимной функции, известной в С#, как “выражение лямбда”.

Например, (int p) => p * 2 представляет собой функцию, которая принимает целое число и умножает его на два.

Оцените статью
Добавить комментарий