2015-12-06 158 views
27

今天是第一次看到我与此类似。为什么要这样做,有什么好处?C#λ变量初始化

+12

请注意,此语法仅在C#6.0语言版本中可用。 –

+0

伟大的新功能,增加更多代码简洁IMO! –

回答

24

这就是所谓的表达浓郁的属性和它只是只消气特性的快捷方式:

private string m 
{ 
    get { return string.Empty; } 
} 

至于这种做法的好处,我想你可以把它当作语法糖,这只是节省您一些击键。

请参阅​​

+5

不仅仅是保存按键,而且如果你有很多它们,也更容易阅读 - 不那么混乱。 (也就是说,假设读者熟悉这个语法。) – Bob

5

这实际上并不是一个变量初始化,它将lambda表达式“string.Empty”绑定到“m”,所以无论何时解除引用“m”,它都会实际评估您的lambda表达式。

进一步的阅读检查出this github page(部分“表达健全功能部件”)

12

这不是一个变量,它是一个表达浓郁性。一个只读属性,在你的情况下返回string.Empty

这是一样

private string m { get { return string.Empty; } } 

它的推出在C#6.0中的新功能之一。好处是更短,更简洁的代码。特别是如果你有一个有很多简单的只读属性的类。

如果您想查看该语法的真实示例,请检查this post on Eric Lippert's blog。正如你所看到的,那里有很多单行方法和属性。如果没有表达式的属性和成员,代码将会更长。其中很大一部分是花括号。