На самом деле ваш блок try-catch не вызовет никаких исключений, потому что когда вы создаете массив:
string[,] screeny_baza = new string[300, 300];
, вы всегда можете индексировать его, пока индексы находятся в диапазоне;поэтому оператор:
string nazwa_screna_pokolei = screeny_baza[0,i];
будет выполнен без ошибок.Просто nazwa_screna_pokolei будет нулевым;
Также, если речь идет о скорости, вложенный цикл for намного быстрее, чем LinQ.по крайней мере, для этой простой проверки.например:
var list = screeny_baza.Cast<string>().Where(x => !string.IsNullOrEmpty(x)).ToList();
займет около 10 миллисекунд, но
for (int i = 0; i < 300; i++)
{
for (int j = 0; j < 300; j++)
{
if (string.IsNullOrEmpty(screeny_baza[i,j]))
{
continue;
}
list.Add(screeny_baza[i, j]);
}
}
займет всего 1 миллисекунду.