我一直在尋找到實體框架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
謝謝,已編輯文章。 –