используя lambda для инициализации переменной. Зачем делать это так и в чем преимущества?
Ответ 1
Он называется Expression-Bodied Properties, и это просто ярлык для свойств только для getter:
private string m
{
get { return string.Empty; }
}
Что касается преимуществ этого подхода, я думаю, вы можете рассматривать его как синтаксический сахар, который лишь сэкономит вам несколько нажатий клавиш.
Это не переменная, это свойство с выражением. Свойство только для чтения, в вашем случае возвращает string.Empty.
Это то же самое, что и
private string m { get { return string.Empty; } }
Это одна из новых функций, представленных в С# 6.0. Преимущество - более короткий, более сжатый код. Особенно, если у вас есть класс с множеством простых свойств для чтения.
Если вы хотите увидеть реальный пример этого синтаксиса, отметьте этот пост в блоге Эрика Липперта. Как вы можете видеть, там много однострочных методов и свойств. Без выразительных свойств и членов код будет намного длиннее. И значительная его часть - фигурные скобки.
Ответ 3
На самом деле это не инициализация переменных, это связывает выражение лямбда "string.Empty" с "m", поэтому всякий раз, когда вы разыскиваете "m", он будет фактически оценивать ваше лямбда-выражение.
Для дальнейшего чтения просмотрите эту страницу github (раздел "Элемент функции с выражением выражения" )