我一直在寻找到实体框架7的源代码上github我发现以下属性初始化中TableExpressionBase.cs初始化与=>(这样)
public override ExpressionType NodeType => ExpressionType.Extension;
我从来没见过=>
运营商的这种用法在C#中。我也看过C#6.0中的新东西,但是我还没有找到这个构造。有人可以解释它的目的是什么吗?
谢谢。
我一直在寻找到实体框架7的源代码上github我发现以下属性初始化中TableExpressionBase.cs初始化与=>(这样)
public override ExpressionType NodeType => ExpressionType.Extension;
我从来没见过=>
运营商的这种用法在C#中。我也看过C#6.0中的新东西,但是我还没有找到这个构造。有人可以解释它的目的是什么吗?
谢谢。
这是在C#6.0中添加的新的表达式成员语法。
This article有一个很好的被添加的东西的概要,寻找标题“表达主体的功能和属性”约3/4的文章。
在C#6.0中添加了很多语法来生成代码。它不允许你做以前不能做的事情,但它使得你必须编写的代码行数更小。
特别是,如果你有这样的特性:
public TYPE Name
{
get
{
return EXPRESSION;
}
}
然后,你可以写信此属性是这样的:
public TYPE Name => EXPRESSION;
编译后的代码将是相同的,所以你可以挑选这是你想使用的两种语法变体之一。
你可以做同样的事情的方法:
public string Name(int PARAM1, string PARAM2)
{
return string.Format("{0}, {1}", PARAM1, PARAM2);
}
可以成为:
public string Name(int PARAM1, string PARAM2) => string.Format("{0}, {1}", PARAM1, PARAM2);
这一切就是这么简单。
具体来说,您在EF7代码看到属性是基本相同的:
public override ExpressionType NodeType
{
get
{
return ExpressionType.Extension;
}
}
这就像你怀疑一个新的C#6.0的功能。
属性和索引可以具有getter和settersgetter仅 性质和索引可以具有表达体:
public string Name => First + " " + Last; public Customer this[long id] => store.LookupCustomer(id);
http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx
及其简单地更短的方式来定义的吸气剂为属性。
https://msdn.microsoft.com/en-us/magazine/dn802602.aspx,在'Expression Bodied Functions and Properties'子标题下 – sstan
谢谢,已编辑文章。 –