今天我第一次看到类似的东西:
private string m => string.Empty;
使用lambda初始化变量.为什么这样做,有什么好处?
它被称为Expression-Bodied Properties,它只是getter-only属性的快捷方式:
private string m { get { return string.Empty; } }
至于这种方法的好处,我想你可以将它视为语法糖,只能节省你一些击键.
请参阅Roslyn Wiki
它不是一个变量,它是一个表达身体的财产.一个只读属性,在您的情况下返回string.Empty
.
它是一样的
private string m { get { return string.Empty; } }
这是C#6.0中引入的新功能之一.好处是更短,更简洁的代码.特别是如果你有一个具有很多简单只读属性的类.
如果您想查看此语法的真实示例,请查看Eric Lippert博客上的这篇文章.如您所见,那里有很多单行方法和属性.如果没有表达式的属性和成员,代码会更长.而相当一部分将是花括号.
这实际上不是变量初始化,这将lambda表达式"string.Empty"绑定到"m",所以每当你取消引用"m"时,它实际上会评估你的lambda表达式.
如需进一步阅读,请查看此github页面("表情身体功能成员"部分)