2015-05-22 2 views
-7

Я не могу использовать переменные, объявленные во вложенных блоках.Невозможно использовать вложенную переменную

Пример:

if(condition){ 
    var test = "success"; 
    { 

Если я пытаюсь использовать переменный тест я получаю ошибку компиляции:

CS0103: The name 'test' does not exist in the current context

+7

Похоже, вы не обнаружили _even_ реального кода, который генерирует это сообщение об ошибке. На какой строке вы его получите? –

+0

Обходным путем является перемещение переменной за пределы области действия. – adricadar

+0

К чему относится дополнительная фигурная скобка на третьей линии? Вы не можете просто открыть фигурные скобки без причины, если они не являются частью какой-либо конструкции. – irreal

ответ

2

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

Поскольку переменная должна иметь значение, даже если вы не запускать код в блоке, вы должны либо установить начальное значение:

string test = null; 
if (condition) { 
    test = "success"; 
} 

или использовать else блок для установки значения в противном случае:

string test; 
if (condition) { 
    test = "success"; 
} else { 
    test = null; 
} 
0

Это потому, что св local переменные и доступен только в этих фигурных скобках. Не снаружи.

Чтобы сделать его доступным снаружи, вы можете захотеть объявить его вне функции или вне метода или в начале страницы в соответствии с вашими потребностями.

Обратите внимание на переменные local и global, а также на концепцию переменной scope.

Это должно быть сделано.

+0

Если я объявляю его снаружи, любое присваивание не видно за пределами блока, и я получаю: CS0165: использование неназначенной локальной переменной 'test' –

+0

Это потому, что вы можете написать ее так: 'var test;'. Напишите его так: 'var test =" ";' или 'var test = 1;' или что-нибудь еще. Просто назначьте ему значение для цели инициализации, а затем вы сможете поиграть с ним. –

0

Вы можете просто написать это как:

var test = condition ? "success" : "failure"; 
... 
// use test as required. 

(Replace "провал" остроумие h любое значение, которое вы хотите проверить, когда условие ложно).