Какое значение нужно установить в System.Collection.Specialized.StringCollection Properties.Settings.Default в свойствах проекта?

У меня есть listbox с именем elapsedtimeitem, в нем должны храниться все результаты (время) прохождения пользователем игры. Мне также нужно убедиться, что при перезапуске приложения эти результаты (listbox) не стираются. То есть все элементы Listbox останутся. Для этого я хочу использовать Properties.Settings.Default.History. Я указал тип для этого свойства system collection specialized string collection. Я хочу, чтобы, когда я получу новый пользовательский результат (строку), он был записан в Properties.Settings.Default.History. И из Properties.Settings.Default.History записывать значения в elapsedtimeitem. Я создал следующий код:

Properties.Settings.Default.History.Add(elapsedtimeitem);
Properties.Settings.Default.Save();

Но я получил ошибку. Чтобы быть уверенным, что это не из-за переменной, я изменил код для теста на:

Properties.Settings.Default.History.Add("00:30");
Properties.Settings.Default.Save();

И он выдает ошибку: System.NullReferenceException: "Object reference not set to an instance of an object." Fifteen.Properties.Settings.History.get вернул null.

Как я понимаю, я не могу использовать .Add, так как Properties.Settings.Default.History не задано значение. Но какое значение я должен ввести?

Он не принимает ни одну строку в качестве параметра, он также не принимает массив. Очевидно, я делаю что-то не так, но я не понимаю что.


Ответы (1 шт):

Автор решения: Artem Sitnikov

Просто инициализируй StringCollection если оно null:

Properties.Settings.Default.History ??= new StringCollection();
Properties.Settings.Default.History.Add("00:30");

Массив StringCollection серриализуется в:

<ArrayOfString 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <string>00:30</string>
</ArrayOfString>
→ Ссылка