lebedevsrg По итогам выполнения ДЗ появился такой вопрос - если в конструкторе Stock() указать не "quotes = new List<Quote>()", а "List<Quote> quotes = new List<Quote>()", то программа вываливается с ошибкой "Ссылка на объект не указывает на экземпляр объекта."
С чем может быть связана такая негативная реакция на типизацию "List<Quote>", ведь в других местах записано например " Stock st = new Stock()" и все работает нормально?
Дело в том, что для исходного варианта имя quotes было объявлено глобально и выполняя строку:
quotes = new List<Quote>()
мы создаем экземпляр объекта для глобального (объявленного ранее) имени quotes.
Если мы пишем так:
List<Quote> quotes = new List<Quote>()
то мы создаем локальную переменную, никак не связанную с глобальной, но которая имеет тоже имя.
И, следовательно, если писать:
List<Quote> quotes = new List<Quote>()
и не инициализировать глобальную переменную quotes, которая далее используется, то возникнет ошибка, о которой вы пишите. Конечно, можно сделать проверки, на то что переменная инициализирована, имеет верное значение,... но данный вопрос не про это.