Проблема с вашим кодом заключается в том, что вы инициализируете массив данных только в MyDataArray. При создании массива экземпляров он только инициализирует ссылки для массива, а не фактические экземпляры, которые должны быть в массиве. Все эти ссылки указывают на ноль. Поэтому, когда вы пытаетесь установить целочисленный элемент экземпляра i-й пары в массиве данных:
...
data[i].integer = rand.Next();
...
Вы на самом деле пытаетесь установить целочисленный элемент null, который не существует.
...
null.integer = rand.Next();
...
Чтобы это исправить, просто создайте новый экземпляр Pair для каждого индекса данных в вашем l oop.
...
for (int i = 0; i < n; i++)
{
data[i] = new Pair();
data[i].integer = rand.Next();
data[i].doubl = rand.NextDouble();
}
...
Еще лучше, вы можете использовать конструктор, который вы сделано там, где нужны параметры для установки целого числа и удвоения при построении для упрощения кода в вашем l oop.
...
for (int i = 0; i < n; i++)
{
data[i] = new Pair(rand.Next(), rand.NextDouble());
}
...