Ответы пользователя по тегу C#
  • Как обрабатывать только занятые элементы массива?

    abberdeen
    @abberdeen
    Некромантия: Почему бы не сохранить индексы не нулевых элементов массива?

    var itemsCount = 100;
    
    // Исходный массив.
    var ArrayTest = new string[itemsCount];
    
    // Количество не нулевых элементов.
    var counter = 0;
    
    // Для хранения индексов не нулевых элементов.
    var ArrayTestIndex = new int[itemsCount];
    
    for (byte i = 0; i < ArrayTest.Length; ++i)
    {
        if (i == 4 || i == 56)  // Очень сложное условие.
        {
            ArrayTest[i] = $"Это не нулевой объект #{i}";
    
            // Считаем количество не нулевых элементов.
            counter++;
    
            // Сохраняем индекс текущего элемента.
            ArrayTestIndex[counter - 1] = i;
        }
        else
        {
            ArrayTest[i] = null; 
        }
    }
    
    // Отрезаем пустые элементы в реестре индексов.
    Array.Resize(ref ArrayTestIndex, counter);
    
    for (byte i = 0; i < ArrayTestIndex.Length; ++i)
    {
        // Индекс не нулевого элемента исходного массива.
        var index = ArrayTestIndex[i];
    
        // Делаем что хотим.
        Console.WriteLine(ArrayTest[index]);
    }
    Ответ написан
    Комментировать