Массиву не присваеваеться значение
namespace Console_Serep
{
class Program
{
static void Main()
{
ReadedReport json = File.Exists(Directory.GetCurrentDirectory()) ? JsonConvert.DeserializeObject<ReadedReport>(File.ReadAllText(Directory.GetCurrentDirectory())) : new ReadedReport();
while (true)
{
switch (Console.ReadLine())
{
case "/rep":
Console.WriteLine("Введите отчет в формате 00 00 00:00 00 00");
string rep = Console.ReadLine();
int id = json.Items == null ? 0 : json.Items.Length;
json.Items[id] = new Converter(rep).Report;
File.WriteAllText(Directory.GetCurrentDirectory(), JsonConvert.SerializeObject(json));
break;
default:
Console.WriteLine("Такой команды не предусмотренно, попробуйте ввести другую или проверить наличие опечаток");
break;
}
}
}
}
class ReadedReport
{
public Report[] Items { get; set; }
}
}
System.NullReferenceException: "Object reference not set to an instance of an object." - эта ошибка возникает на строке записи в файл.
Элементу массива json.Items[id] не присваивается значение объекта, типы данных массива и присваиваемого объекта совпадают. Подскажите, пожалуйста, в чем ошибка и как можно сделать иначе.
Ответы (1 шт):
public Report[] Items { get; set; }
Массив имеет фиксированное количество элементов, которое задается при создании массива, например new Report[4]. В массив нельзя динамически добавлять элементы.
Используйте список вместо массива.
public List<Report> Items { get; set; }
Тогда код будет выглядеть вот так:
Console.WriteLine("Введите отчет в формате 00 00 00:00 00 00");
string rep = Console.ReadLine();
if (json.Items == null)
json.Items = new List<Report>();
json.Items.Add(new Converter(rep).Report);
На работу с JSON сериализацией изменение типа этого свойства повлиять никак не должно.
И обязательно прочитайте вот это: Что такое NullReferenceException, и как мне исправить код?