C#lambda变量初始化

本文关键字:初始化 变量 C#lambda | 更新日期: 2023-09-27 18:25:49

今天我第一次看到类似的东西:

private string m => string.Empty;

使用lambda初始化变量。为什么要这样做,有什么好处?

C#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"部分)