Znaczenie () = > Operator W C#, jeśli istnieje

Przeczytałem ten ciekawy tekst Tutaj , w odpowiedzi Jona Skeeta.

Ciekawa linijka jest taka, gdzie zalecał użycie delegata:

Log.Info("I did something: {0}", () => action.GenerateDescription());

Pytanie, co to jest () = > operator, ciekawe? Próbowałem go Googlować, ale ponieważ jest zrobiony z symboli, Google nie mogło być zbyt pomocne, naprawdę. Czy coś mnie tu zawstydzało?

Author: Community, 2010-09-02

5 answers

To wprowadza funkcję lambda (anonimowy delegat) bez parametrów, jest ona równoważna i w zasadzie skrócona dla:

delegate void () { return action.GenerateDescription(); }

Możesz także dodać parametry, więc:

(a, b) => a + b

Jest to w przybliżeniu równoważne:

delegate int (int a, int b) { return a + b; }
 50
Author: Simon Steele,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-02 15:15:27

" = > " jest to operator lambda, gdy nie mamy żadnych parametrów wejściowych, używamy nawiasów okrągłych przed operatorem lambda.

Składnia: (parametry wejściowe) = > wyrażenie

 6
Author: htr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-02 14:22:41

Oto przykład wyrażenia lambda więcej informacji znajdziesz tutaj .

 3
Author: Jake Pearson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:17

Tworzenie anonimowego delegata do określonej metody.

Prawdopodobnie w Twoim przypadku będzie to Func<string>

 2
Author: abatishchev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-02 14:03:27

Jest to sposób na przekazanie anonimowego delegata bez parametrów jako wyrażenia lambda.

Podobne do tego z. NET 2.0

Log.Info("I did something: {0}", delegate()
            {
                return action.GenerateDescription();
            });
 1
Author: PiRX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-03 03:15:46