2017-02-01 18 views
-2
public class MyClass 
{ 

    public string DeviceCommands { get; set; } = "DeviceCommands"; 
} 

У меня есть 30 ошибок в этом виде линий ...ли это действительный синтаксис в C# .NET 4.6.2

+2

этот синтаксис действует в C# 6, вы можете скомпилировать его во многих .net целей, 4,6 является одним из них –

+1

Чтобы добавить C# 6 в VS2013 - http://stackoverflow.com/a/32010632/1544886 –

ответ

5

.NET 4.6.2 является рамочным версия, а не языковой версии. Чтобы иметь возможность делать эту строку, вы должны использовать C# 6 или новее. Если вы компилируете C# 6, вам будет разрешено использовать этот синтаксис в проекте .NET 2.0.

Если вы используете Visual Studio 2015 или новее, вы используете C# 6 или новее.

Если вы используете Visual Studio 2015 и по-прежнему получаете ошибки, есть еще одна проблема с вашим кодом, который вы нам не показываете.

UPDATE:

Если вы используете VS2015 и получаю ошибку, которая говорит

CS8026 Ошибка: Функция 'автоматическое свойство инициализатор' не доступен в C# 5. Пожалуйста, используйте языковой версии 6 или выше.

Это означает, что в свойствах вашего проекта -> Сборка -> Расширенный экран вы устанавливаете языковой вариант вручную до 5 или ниже, а не по умолчанию.

enter image description here

Установка обратно в default будет решить эту проблему.

+0

Я использую VS2013, а .NET 4.6.2 установлен в настройках проекта - теперь я вижу, что в предыдущей версии проекта он составлял компиляцию но теперь это не ... и не может найти никакой очевидной причины ... –

+3

*** «Я использую VS2013 ...» *** Это ваша проблема. Вы используете C# 5, потому что используете VS2013, вам нужно открыть проект в VS2015, чтобы его можно было скомпилировать. –

0

Синтаксис, который у вас есть, - это Инициализаторы свойств недвижимости.

Это не имеет ничего общего с .NET Version. Это языковая функция от C# 6.0.

Для того, чтобы сделать эту работу, нужен roslyn compiler plattform.

Если вы не можете поддерживать C# 6.0, вы могли бы сделать это по-старому:

public class MyClass 
{ 
    public string DeviceCommands { get; set; }; 

    public MyClass() 
    { 
     DeviceCommands = "DeviceCommands"; 
    } 
}