Описать класс "предметный указатель". Ошибка с полем - C#
Формулировка задачи:
Каждый разрабатываемый класс должен, как правило, содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров, методы; свойства, индексаторы; перегруженные операции. Функциональные элементы класса должны обеспечивать непротиворечивый, полный, минимальный и удобный интерфейс класса. При возникновении ошибок должны выбрасываться исключения.
Дана такая задача:
Описать класс "предметный указатель". Каждый компонент указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, от одного до десяти. Предусмотреть возможность формирования указателя с клавиатуры и из файла, вывода указателя, вывода номеров страниц для заданного слова, удаления элемента из указателя.
Я пытаюсь сделать часть задачи, а именно формирования указателя с клавиатуры и вывод указателя. Здесь возникла проблема в 29 строке, после неё вылетает. Можете пожалуйста объяснить что не-так и что нужно исправить.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Лабораторна_робота__8
{
class Subject_index
{
public string word;
public int[] page_number;
}
class Program
{
static void Main(string[] args)
{
Subject_index[] words = new Subject_index[10];
Console.Write("Введiть кiлькiсть слiв, яке ви бажаєте ввести: ");
string str = Console.ReadLine();
try
{
for (byte i = 0; i < Convert.ToByte(str); i++)
{
Console.Write("Введiть слово у вказiвник: ");
words[i].word = Console.ReadLine();
Console.Write("Введiть кiлькiсть сторiнок для цього слова: ");
string buf = Console.ReadLine();
int num_of_pag = Convert.ToInt32(buf);
int[] page = new int[num_of_pag - 1];
Random a = new Random();
for (byte j = 0; j < num_of_pag; j++)
page[j] = a.Next(1, 350);
words[i].page_number = new int[num_of_pag];
words[i].page_number = page;
}
Console.WriteLine();
for (byte i = 0; i < byte.Parse(str); i++)
{
Console.WriteLine(words[i].word);
for (byte j = 0; j < words[i].page_number.Length; j++)
{
Console.Write("\t" + words[i].page_number[j]);
}
Console.Write("\n\n");
}
}
catch(Exception ex)
{ Console.Write("\nВиключення:" + ex.Message); }
Console.Read();
}
}
}Решение задачи: «Описать класс "предметный указатель". Ошибка с полем»
textual
Листинг программы
for (byte i = 0; i < Convert.ToByte(str); i++)
{
Console.Write("Введiть слово у вказiвник: ");
words[i] = new Subject_index();
words[i].word = Console.ReadLine();