表达体功能成员在C#6.0中的效率和性能

时间:2015-02-09 13:53:47

标签: c# c#-6.0

在新的C#6.0中,我们可以使用lambda表达式定义方法和属性。

例如这个属性

public string Name { get { return First + " " + Last; } }

现在可以定义如下:

public string Name => First + " " + Last; 

您可以在此处找到有关表达式功能成员的信息:http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx

有没有人知道使用新语法时是否有任何开销?它可以减慢(或提高效率)应用程序,或者可能没关系?

2 个答案:

答案 0 :(得分:72)

  

在新的C#6.0中,我们可以使用lambda表达式定义方法和属性。

不,你不能。您可以使用看起来像表达式的语法来定义方法和属性体,因为它使用了令牌=>

然而,重要的是,意味着涉及委托类型。 (而lambda表达式只允许在它转换为表达式树或委托类型的上下文中。)

这纯粹是语法糖。您的两个示例代码段将编译为完全相同的IL。它只是表示属性获取器或方法的主体的不同方式。

答案 1 :(得分:8)

他们将编译成相同的IL,你可以自己测试它,并使用ildasm来提取IL。