我有以下代码:
public bool IsUser
{
get { return false; }
}
现在Resharper建议我把它写到:
public bool UseBands => false;
然而,这不会编译,我的编译器抱怨我应该添加&#34 ;;"?
更新
我在Visual Studio 2013 Update 4上使用Resharper 9时遇到过这个问题.Resharper似乎在项目属性中查找应该应用的建议规则。如果您遇到此问题,那么可能正如Szer所提到的那样,您已启用C#6.0语言级别。
要禁用它,只需在解决方案资源管理器中单击您的项目,然后将C#语言级别设置为C#6.0以外的其他级别。
PS:由于我对更改项目设置的了解有限,我不知道有设置此功能的功能。虽然我不记得改变了它(C#语言水平)。谢谢你的帮助。
答案 0 :(得分:11)
根据MSDN,这是C#6功能之一。 ReSharper9部分支持它,你可能会提前启用它。
来自MSDN:
Expression-bodied函数成员允许方法,属性等 各种函数成员使用具有表达式的实体 语句块,就像lambda表达式一样。
可以给出方法以及用户定义的运算符和转换 表达体使用“lambda箭头”:
public Point Move(int dx, int dy) => new Point(x + dx, y + dy); public static Complex operator +(Complex a, Complex b) => a.Add(b); public static implicit operator string(Person p) => "\{p.First} \{p.Last}";
效果与方法具有块体的效果完全相同 只有一个退货声明。
对于void返回方法 - 和Task返回异步方法 - 箭头语法仍然适用,但箭头后面的表达式 必须是一个语句表达式(就像lambdas的规则一样):
public void Print() => Console.WriteLine(First + " " + Last);
属性和索引器只能有getter和settersgetter 属性和索引器可以有一个表达式主体:
public string Name => First + " " + Last; public Customer this[long id] => store.LookupCustomer(id);
请注意,没有get关键字:使用时暗示了它 表达体语法。
更多信息:http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx