2015-05-10 3 views
0

У меня возникла проблема с созданием программы на C#. Моя проблема - исключение NullReferenceException. Я использую массивы списков. Я представлю ниже части кода, где я имею дело с исключениями:NullReferenceException в C# (используя массив списков)

List<int>[] selected_universities = new List<int> [num_candidates]; 
int university_code; 
for (i = 0; i < num_candidates; i++) 
{ 
    Console.WriteLine("Please give the increasing code from 1 to " + num_universities + " in descedant sorted sequence of the universities you would like to enter."); 
    Console.WriteLine("Press 0 to terminate your list"); 
    for (i = 0; i < num_universities; i++) 
    { 
     try 
     { 
      Console.WriteLine("Give your code now..."); 
      university_code = Convert.ToInt32(Console.ReadLine()); 
      if (university_code == 0) break; 
      else selected_universities[i].Add(university_code); 
     } 
     catch (NullReferenceException e) 
     { 
      Console.WriteLine("The exception: " + e + " has occured!"); 
     } 
    } 
} 
List<int>[] temporarily_success_candidates = new List<int>[num_universities]; 
for (i = 0; i < num_universities; i++) 
{ 
    temporarily_success_candidates[i].Add(0); 
} 
+0

Пожалуйста, правильно отформатируйте код (отступ с 4 пробелами в редакторе) – milo526

+0

вы не указали, какой объект выбрасывает исключение нулевой ссылки, но трудно представить, что ваш случай не включен в хорошо известную статью на эту тему , http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it?/ – Claies

ответ

0

Проблема в том здесь

selected_universities[i].Add(university_code); 

Вы пытаетесь добавить элемент в список, который не может быть инициализирован на всех , Он равен нулю.

Этот List<int>[] selected_universities = new List<int> [num_candidates]; создаст массив, в котором вы будете хранить список целых чисел. Однако, если мы скажем, что массив имеет 10 элементов, все 10 элементов будут пустыми. Для решения этой проблемы вы можете попробовать следующее:

List<int>[] selected_universities = 
{ 
    new List<int> {}, 
    new List<int> {}, 
    new List<int> {}, 
    new List<int> {}, 
    new List<int> {} 
}; 

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

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