Этот фрагмент кода выдает ошибку, к которой эти переменные не были привязаны, и я не могу понять, почему

#c# #list #static #filereader

Вопрос:

Я хочу создать статический список, но когда я пытаюсь прочитать из файла и присвоить спискам значение, он говорит, что ему не присвоено, поэтому его значение равно нулю.

 class Log  { static public Listlt;stringgt; varos;  static public Listlt;intgt; tav;  static public Listlt;intgt; n;   public void Input()  {  var sr = new StreamReader("vartav.txt");   while (!sr.EndOfStream)  {  string s = sr.ReadLine();  string[] seged = s.Split(' ');  Log.varos.Add(seged[0]);  Log.tav.Add(Convert.ToInt32(seged[1]));  }  }   

Ответ №1:

Переменная — это не объект, это просто заполнитель для объекта. Вы объявляете переменные:

 static public Listlt;stringgt; varos;  

Но вы никогда не инициализировали их в объект:

 static public Listlt;stringgt; varos = new Listlt;stringgt;();  

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

Ответ №2:

попробуйте инициализировать метод Input() внутри

 varos = new Listlt;stringgt;(); tav = new Listlt;stringgt;(); n = new Listlt;stringgt;();  

или инициализируйте, когда вы объявите их

 static public Listlt;stringgt; varos = new Listlt;stringgt;(); static public Listlt;stringgt; tav = new Listlt;stringgt;(); static public Listlt;stringgt; n = new Listlt;stringgt;();  

Комментарии:

1. Это выглядит как правильный ответ, но этот ответ следует улучшить, объяснив, как работает ваше предложение. Например, вы присваиваете значения по мере объявления. Спасибо за ваш вклад.