C# 6.0 中表达式体函数成员的效率和性能
Expression-bodied function members efficiency and performance in 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
有谁知道使用新语法时是否有任何开销?它会减慢(或提高应用程序的效率)还是无关紧要?
In a new C# 6.0 we can define methods and properties using lambda expressions.
不,你不能。您可以使用 看起来 类似于 lambda 表达式的语法定义方法和 属性 主体,因为它使用标记 =>
.
但是,重要的是,这 不 意味着涉及委托类型。 (而 lambda 表达式只允许在将其转换为表达式树或委托类型的上下文中使用。)
这纯粹是语法糖。您的两个示例代码片段将编译为完全相同的 IL。 只是表示属性getter或方法主体的不同方式。
它们将编译成相同的 IL,您始终可以自己测试并使用 ildasm 提取 IL。
在新的 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
有谁知道使用新语法时是否有任何开销?它会减慢(或提高应用程序的效率)还是无关紧要?
In a new C# 6.0 we can define methods and properties using lambda expressions.
不,你不能。您可以使用 看起来 类似于 lambda 表达式的语法定义方法和 属性 主体,因为它使用标记 =>
.
但是,重要的是,这 不 意味着涉及委托类型。 (而 lambda 表达式只允许在将其转换为表达式树或委托类型的上下文中使用。)
这纯粹是语法糖。您的两个示例代码片段将编译为完全相同的 IL。 只是表示属性getter或方法主体的不同方式。
它们将编译成相同的 IL,您始终可以自己测试并使用 ildasm 提取 IL。