模棱两可的错误“;预期”"unexpected end of declaration"

Ambiguous errors "; expected" "unexpected end of declaration"

我的项目中有以下代码。出于本次交流的目的,其中还有其他代码可以注释掉。

namespace Project.HttpHandlers
{
    public class Web : IHttpHandler
    {
        /// <summary>
        /// Gets a value indicating whether another request can use the 
        /// <see cref="T:System.Web.IHttpHandler"/> instance.
        /// </summary>
        /// <returns>
        /// true if the <see cref="T:System.Web.IHttpHandler"/> instance 
        /// is reusable; otherwise, false.
        /// </returns>
        public bool IsReusable => false;
    }
}

Visual Studio 在 "public bool IsReusable => false;" 行上抛出一个错误,指出“;预期”。

当突出显示 => 运算符上的智能感知错误时,我得到 "unexpected end of declaration"。

如果我将其更改为 "public bool IsReusable = false;",错误就会消失。我不完全了解这一行的功能以及为什么那里有一个 lambda 运算符,所以我不想这样做。我知道它可以在同事的机器上编译,我看到它在网络上的其他地方被引用。

我似乎在 Visual Studio 中缺少参考或其他内容,但我找不到它。

这是 expression bodied members 的 C# 6 语法。

< C# 6 的语法:

 private readonly bool _isReusable = false; 
 public bool IsReusable 
 {
     get {return _isReusable; } 
 }

编辑:根据 Scott Chamberlain 的评论更正。

您的同事似乎使用 Visual Studio 2015 而您使用 Visual Studio 2013 或更早版本来编译项目。

如果您不想升级您的 VS 版本,您可以将 lambda 表达式替换为

public bool IsReusable { get { return false; } }

没有任何副作用。

该行定义的 属性 总是 returns 错误。它在功能上等同于 public bool IsReusable {get {return false;} }.

在定义一个属性或调用方法时使用它expression-bodied member. Since it's a new feature with C# 6.0, you have to make sure you are targeting 6.0 or it won't compile. VS2015 defaults to 6.0, but to use it in 2013 you have to install it separately。你的同事要么已经这样做了,要么正在使用 VS2015。