2014-10-26 2 views
-1

Последняя, ​​но третья строка кода не распознает переменные, которые я объявил и заполнил строками.не распознает объявленные переменные в C# .net

static void Main(string[] args) 
    { 
     string inputNumber = "1979"; 

     string input1 = inputNumber.Substring(0, 1); 
     string input2 = inputNumber.Substring(1, 1); 
     string input3 = inputNumber.Substring(2, 1); 
     string input4 = inputNumber.Substring(3, 1); 

     int intInput1; 
     int intInput2; 
     int intInput3; 
     int intInput4; 

     intInput1 = Convert.ToInt32(input1); 
     intInput2 = Convert.ToInt32(input2); 
     intInput3 = Convert.ToInt32(input3); 
     intInput4 = Convert.ToInt32(input4); 

     string stringOutput1; 
     string stringOutput2; 
     string stringOutput3; 
     string stringOutput4; 

     // 1000 Input. 
     switch (intInput1) 
     { 
      case 1: 
       stringOutput1 = "M"; 
       break; 
      default: 
       break; 
     } 

     //100 Input 
     switch (intInput2) 
     { 
      case 9: 
       stringOutput2 = "CM"; 
       break; 
      default: 
       break; 
     } 

     //10 Input 
     switch (intInput3) 
     { 
      case 7: 
       stringOutput3 = "LXX"; 
       break; 
      default: 
       break; 
     } 

     //1 Input 
     switch (intInput4) 
     { 
      case 9: 
       stringOutput4 = "IX"; 
       break; 
      default: 
       break; 
     } 

     //Use of unassigned local variable error is showing for 'stringOutput1', 'stringOutput2', 'stringOutput3' and 'stringOutput4' 
     Console.WriteLine("{0} is {1}{2}{3}{4} in Roman Numerals",inputNumber, stringOutput1, stringOutput2, stringOutput3, stringOutput4); 
     Console.CursorVisible = false; 
     Console.ReadKey(); 
    } 

P.S. Я знаю, что переменные заполняются путем комментирования

Console.WriteLine("{0} is {1}{2}{3}{4} in Roman Numerals",inputNumber, stringOutput1, stringOutput2, stringOutput3, stringOutput4); 

и с использованием точки останова и перехода на код.

+0

'// Использование неназначенной локальной переменной ошибки показывает для«stringOutput1»,«stringOutput2»,«stringOutput3»и«stringOutput4'' .. –

+0

компилятор хочет предотвратить вас от неосторожных ошибок. Не гарантируется, что эти переменные всегда инициализируются. Вы используете 'switch-case', который инициализирует' stringOutput1', если 'intInput1 == 1'. Во всех остальных случаях он по-прежнему «null». То же самое относится к другим переменным. Используйте 'default'-section, чтобы назначить значение по умолчанию или назначить его в первую очередь (f.e.' String stringOutput1 = null; ') –

ответ

3

Это потому, что вашим переменным, возможно, еще ничего не назначили. Необходимо гарантировать, что переменным должно быть присвоено что-то, прежде чем они могут быть использованы. В качестве простого исправления, вы можете использовать объявление, как это:

string stringOutput1 = ""; 
+0

Спасибо. это сработало сразу. – Leeway

1

Попробуй назначить аннулируют декларации

string stringOutput1 = null; 
string stringOutput2 = null; 
string stringOutput3 = null; 
string stringOutput4 = null; 
0

Вы должны инициализировать переменные, сделать это, как это.

string stringOutput1 , stringOutput1, stringOutput3, stringOutput4 = string.Empty; 

и вы также можете назначить значения по умолчанию для каждой переменной.

string stringOutput1 = "foo1", stringOutput1 = "foo2" 
, stringOutput3= "foo3", stringOutput4 = "foo4"; 
Смежные вопросы