2015-03-22 5 views
-11

Мой кодИмя не существует, даже если объявлен

static int IntCheck(string num) 
{ 
    int value; 
    if (!int.TryParse(num, out value)) 
    { 
     Console.WriteLine("I am sorry, I thought I said integer, let me check..."); 
     Console.WriteLine("Checking..."); 
     System.Threading.Thread.Sleep(3000); 
     Console.WriteLine("Yup, I did, please try that again, this time with an integer"); 
     int NewValue = IntCheck(Console.ReadLine()); 
    } 
    else 
    { 
     int NewValue = value; 
    } 
    return NewValue; 
} 

Ошибка

Название 'NewValue' не существует в текущем контексте (строка 33)

+9

Определите свой 'NewValue' верх вашего метода. Поскольку оба определения «NewValue» находятся внутри блоков «if» и «else», они недоступны извне. –

+0

Замечание: перед тем, как задать вопрос о ошибке компилятора, всегда полезно проверить, что MSDN говорит об этом, то есть в этом случае [CS0103] (https://msdn.microsoft.com/en-us/library/t8zbaa6f.aspx): «Эта ошибка часто возникает, если вы объявляете переменную в цикле или блоке' try' или 'if', а затем пытаетесь получить к ней доступ из закрывающего кодового блока или отдельного кодового блока, –

ответ

6

Вы должны объявить его за пределами

static int IntCheck(string num) 
{ 
    int value; 
    int NewValue; 
    if (!int.TryParse(num, out value)) 
    { 
     Console.WriteLine("I am sorry, I thought I said integer, let me check..."); 
     Console.WriteLine("Checking..."); 
     System.Threading.Thread.Sleep(3000); 
     Console.WriteLine("Yup, I did, please try that again, this time with an integer"); 
     NewValue = IntCheck(Console.ReadLine()); 
    } 
    else 
    { 
     NewValue = value; 
    } 
    return NewValue; 
} 
6

NewValue находится в пределах if и else. Вам нужно переместить объявление за пределы блоков.

static int IntCheck(string num) 
{ 
    int value; 
    int NewValue; 
    if (!int.TryParse(num, out value)) 
    { 
     Console.WriteLine("I am sorry, I thought I said integer, let me check..."); 
     Console.WriteLine("Checking..."); 
     System.Threading.Thread.Sleep(3000); 
     Console.WriteLine("Yup, I did, please try that again, this time with an integer"); 
     NewValue = IntCheck(Console.ReadLine()); 
    } 
    else 
    { 
     NewValue = value; 
    } 
    return NewValue; 
} 
Смежные вопросы