Недопустимый маркер ' = ' в объявлении класса, структуры или члена интерфейса 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 V12 в 2013.0.40629.00 обновление 5

3 ответов


настройка значения по умолчанию для автоматически реализованных свойств доступна только в C# - версии 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{ etc.

спасибо всем, я возвращаюсь в свою дыру.


похоже, что эта ошибка происходит из-за версии вашего 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"] ?? "";
            }
        }

надеюсь, что это помогает