Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Есть ли метод, позволяющий определить сколько строк двумерного массива заполнено в с#?

Только начинаю осваивать c# и столкнулась с проблемой, у меня есть массив массивов M[6] [], он иногда заполняет все строки, иногда нет, при выводе если обратиться к незаполненной строке, выдаст ошибку. Есть ли какой-то метод для подсчета именно заполненных строк? Или как запустить цикл вывода так, чтобы не обращался к пустому элементту?Просто не хочется лишний счетчик создавать. Думала GetLength поможет, но он выводит число строк в целом. Есть что-то такое, но только для заполненных?

По дате
По рейтингу
Аватар пользователя
Просветленный

В C# для решения вашей задачи можно использовать метод, который проверяет, является ли строка массива null или нет. Двумерный массив в C# может содержать строки, которые еще не инициализированы, что и вызывает ошибку при попытке обращения к таким строкам.

123456789101112131415161718192021222324252627282930313233343536373839404142
 using System; 
 
class Program 
{ 
    static void Main() 
    { 
        // Инициализация массива массивов (jagged array) 
        int[][] M = new int[6][]; 
 
        // Пример заполнения некоторых строк 
        M[0] = new int[] { 1, 2, 3 }; 
        M[2] = new int[] { 4, 5 }; 
        M[4] = new int[] { 6, 7, 8, 9 }; 
 
        // Подсчет заполненных строк 
        int filledRows = 0; 
        for (int i = 0; i < M.Length; i++) 
        { 
            if (M[i] != null) 
            { 
                filledRows++; 
            } 
        } 
 
        Console.WriteLine("Количество заполненных строк: " + filledRows); 
 
        // Вывод только заполненных строк 
        for (int i = 0; i < M.Length; i++) 
        { 
            if (M[i] != null) 
            { 
                Console.Write("Строка " + i + ": "); 
                for (int j = 0; j < M[i].Length; j++) 
                { 
                    Console.Write(M[i][j] + " "); 
                } 
                Console.WriteLine(); 
            } 
        } 
    } 
}