C# 转换为表达式体似乎不起作用?
我有以下代码:C# 转换为表达式体似乎不起作用?,c#,lambda,C#,Lambda,我有以下代码: public bool IsUser { get { return false; } } 现在Resharper建议我把它写到: public bool UseBands => false; 然而,这并没有编译,我的编译器抱怨我应该添加一个“;” 更新 我在Visual Studio 2013更新4上使用Resharper 9时遇到过此问题。Resharper似乎在查看项目属性,它应该应用哪些建议规则。如果您遇到这个问题,那么可能正如Szer所提到的,您已经启用
public bool IsUser
{
get { return false; }
}
现在Resharper建议我把它写到:
public bool UseBands => false;
然而,这并没有编译,我的编译器抱怨我应该添加一个“;”
更新
我在Visual Studio 2013更新4上使用Resharper 9时遇到过此问题。Resharper似乎在查看项目属性,它应该应用哪些建议规则。如果您遇到这个问题,那么可能正如Szer所提到的,您已经启用了C#6.0语言级别
要禁用它,只需在解决方案资源管理器中单击您的项目,然后将C语言级别设置为C 6.0以外的其他级别
PS:由于我对更改项目设置的知识有限,我不知道有一个函数可以设置这个。虽然我不记得改变过它(C语言级别)。感谢您的帮助。根据MSDN,这是C#6功能之一。ReSharper9部分地支持它,并且您可能有点早就启用了它 引用MSDN: 表达式体函数成员允许方法、属性和其他 函数成员的类型,使其主体改为表达式 语句块,就像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返回方法和任务返回异步方法
箭头语法仍然适用,但箭头后面的表达式
必须是语句表达式(与lambdas的规则一样):
属性和索引器只能有getter和settersgetter
属性和索引器可以具有表达式体:
public string Name => First + " " + Last;
public Customer this[long id] => store.LookupCustomer(id);
注意,没有get关键字:它是通过使用
表达式体语法
更多信息:您正在使用的Resharper和Visual Studio版本是什么?我假设您已经为您的项目启用了C#6支持,因为这看起来像是一个vNext功能。您可能应该在问题中包含类似的信息。请展示一个简短但完整的程序来演示问题,包括完整的错误消息,以及您使用的Visual Studio的确切版本的详细信息。注意:Visual Studio 2015C#6.0和此语言功能可用。我知道这也是一个问题。我正在使用,并且我将我的网站升级为使用.NET4.6.1,但我仍然面临着错误。请帮忙。
public string Name => First + " " + Last;
public Customer this[long id] => store.LookupCustomer(id);