C#lambda变量初始化
本文关键字:初始化 变量 C#lambda | 更新日期: 2023-09-27 18:25:49
今天我第一次看到类似的东西:
private string m => string.Empty;
使用lambda初始化变量。为什么要这样做,有什么好处?
它被称为表达式体属性,它只是仅用于getter属性的快捷方式:
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页面("Expression body function member"部分)