Что делает оператор =>

В документации написано, что опертор => не может быть перегружен, однако кроме объявления лямбда выражений, я видел подобное использование: static int a => 5; И теперь к а можно обращаться как к константе этого класса. Почему оно так работает?


Ответы (1 шт):

Автор решения: Grundy

В документации явно указано, что токен => может встречаться в двух случаях:

  1. lambda operator: в этом случае он разделяет входные параметры, указываемые слева от него, от тела лямбды, расположенного справа.

  2. Expression body definition: в этом случае слева указывается описание члена класса, справа - тело выражения.
    Синтаксис в общем виде выглядит так:

    member => expression;
    

    пример с методом ToString, запись

    public override string ToString() => $"{fname} {lname}".Trim();
    

    равносильна следующей

    public override string ToString()
    {
       return $"{fname} {lname}".Trim();
    }
    

    В вопросе запись static int a => 5; равносильна readonly property

    static int a { get; } = 5
    
→ Ссылка