类,结构或接口成员声明中的标记’=’无效c#

对于人们来说,这可能是一个简单的问题,但我不明白为什么会这样。 这是我的代码第1条:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GameCore { public class PlayerCharacter { public void Hit(int damage) { Health -= damage; if (Health <= 0) { IsDead = true; } } public int Health { get; private set; } = 100; public bool IsDead{ get; private set; } } } 

现在Visual Studio在赋值符号(=)上给出了无效的令牌错误(根据标题),我看不出原因。 有人能说清楚吗?

我要做的是将生命的int设置为100,每次角色受到伤害时,生命值会降低。 谢谢大家。

我正在使用Visual Studio 2013 v12.0.40629.00更新5

为自动实现的属性设置默认值仅适用于C#-version 6及更高版本。 在版本6之前,您必须使用构造函数并在其中设置默认值:

 public class PlayerCharacter { public int Health { get; private set; } public PlayerCharacter() { this.Health = 100; } } 

要为VS2013启用编译器,您可以使用此方法 。

答案是:

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GameCore { public class PlayerCharacter { public int Health { get; private set; } public PlayerCharacter() { this.Health = 100; } public void Hit(int damage) { Health -= damage; if (Health <= 0) { IsDead = true; } } public bool IsDead{ get; private set; } } } 

使用()而不是PLayerCharacter {等等使构造函数成为一个函数

感谢所有人,回到我的洞里,我走了。

看起来这个错误是由于你的MSBuild版本发生的,旧版本的MSBuild只能编译C#版本4,而你的代码用C#版本6格式编写(设置属性的默认值)。

在C#版本6中编写代码的示例:

  public static string HostName { get; set; } = ConfigurationManager.AppSettings["RabbitMQHostName"] ?? ""; 

要使MSBuild编译代码,您需要使用C#4样式编写

 public static string HostName { get; set; } public SomeConstructor() { HostName = ConfigurationManager.AppSettings["RabbitMQHostName"] ?? "";... } 

要么

  public static string HostName { get { return ConfigurationManager.AppSettings["RabbitMQHostName"] ?? ""; } } 

希望能帮助到你