C # /. Net имеет реальных массивов , а не коллекций псевдо-массивов, которые вы видите во многих других языках (они тоже есть, просто они не пытаются выдавать их за массивы),Одним из атрибутов реальных массивов является фиксированный размер .
Так что, когда вы объявляете массив следующим образом:
int[] hard1 = { };
то, что у вас есть, это массив с фиксированным размером 0и, следовательно, присваивание массиву позже следующим образом:
hard1[counter] = Convert.ToInt32(str);
присваивание в никуда.
У вас есть много вариантов, чтобы это исправить.Вот один из них:
private void HardButton_Click(object sender, EventArgs e)
{
var result = File.ReadLines("h1.txt").
Where(line => !string.IsNullOrWhitespace(line)).
Select(line => int.Parse(line)).
ToArray();
}