2014-12-02 4 views
0

Я играю с новыми функциями C# 6.0
У меня есть следующая строка кодаНевозможно использовать первичный конструктор параметр

public class Circle(int radius) 
{ 
    public double circumference => 2 * 3.14 * radius; 
} 

Приведенный выше код не работает и выдает ошибку «Радиус имя не существует в текущем контексте»

, но когда я использую

public class Circle(int radius) 
{ 
    int Radius = radius; 
    public double circumference => 2 * 3.14 * Radius; 
} 

код просто отлично работает.
Это какая-то ошибка от VS как ее CTP или что-то не так с моим кодом. поскольку я считаю, что должен иметь возможность использовать параметр первичного конструктора внутри конструктора, не устанавливая его для какой-либо другой переменной.

+1

возможно дубликат [Первичные Конструкторы больше не компилировать в VS2015] (http://stackoverflow.com/questions/26915789/primary-constructors-no-long-compile-in-vs2015) – Gigi

ответ

1

Согласно MSDN magazine article о новых возможностях языка:

По умолчанию, первичные параметры конструктора не доступен за пределами инициализатора.

Таким образом, вы не можете использовать их напрямую в соответствии с любыми методами, которые вы используете для расчета.

+0

, но вы читаете «Элементы, выражающие выражение», он говорит «мы можем иметь членов в нашем классе, которые имеют тело выражения». В приведенном выше случае я должен иметь возможность использовать параметр внутри его области видимости, который здесь представляет собой всю конструкторскую функцию. – Pankaj

+1

Я не уверен, что я следую. Выраженные члены являются просто синтаксическим сахаром, вы все равно оказываетесь в методе и методах, которые не могут видеть параметры первичного конструктора. Вы больше не внутри конструктора, просто новый синтаксис заставляет вас чувствовать, что вы есть. – DoctorMick

2

Ну, это может не отвечать на ваш вопрос напрямую, но первичный конструктор был снят с C# 6.0.

См: Changes to the language feature set и этот вопрос: Primary constructors no longer compile in VS2015

Вы, вероятно, пытается свой код в Visual Studio 2014 CTP. Вам необходимо загрузить и установить новую версию Visual Studio 2015 Preview. (но сначала вы должны снять установить Visual Studio 2014 CTP)

Вы можете увидеть последние: Languages features in C# 6 and VB 14

Смежные вопросы