Что делает этот странный лямбда-оператор C #? - PullRequest
4 голосов
/ 13 апреля 2011

Глядя на некоторый исходный код, я нашел этот оператор

() => { }

Из чтения MSDN теперь я знаю, что это лямбда-оператор, но как это повлияет на () прохождение {}? Он используется в качестве аргумента для конструктора класса.

Ответы [ 5 ]

13 голосов
/ 13 апреля 2011

Это делегат Action (пусто, без параметров) с телом, которое ничего не делает. Полезно для случаев, когда необходим ненулевой делегат (возможно, для упрощения обратного вызова или вызова события, так как вызов на null является ошибкой), но у вас нет ничего конкретного.

7 голосов
/ 13 апреля 2011

Его можно назвать пустым делегатом. Он ничего не делает, но безопасно вызывать его без проверки на null с. Вроде заполнителя.

Я использую это так:

    event Action SafeEvent = () => { };

    event Action NullableEvent;        

    void Meth()
    {
        //Always ok
        SafeEvent();

        //Not safe
        NullableEvent();

        //Safe
        if (NullableEvent != null)
            NullableEvent();
    }
3 голосов
/ 13 апреля 2011

() список параметров

=> лямбда-вызов

{} объем исполняемого кода (необязательно, если это однострочный текст)

3 голосов
/ 13 апреля 2011

Это для параметра Action в конструкторе, вероятно.Делая () => { }, это дает объекту действительное Действие для выполнения, которое ничего не делает при вызове.

2 голосов
/ 13 апреля 2011

Это может помочь вам лучше понять ...

() => {}

эквивалентно

function () {}

другой пример:

(i) => {i + = 1;}

эквивалентно

function (int i) {i + = 1;}

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