Учебное пособие по C# ArrayList с примерами

⚡ Умное резюме

ArrayList в C# — это динамическая коллекция из пространства имен System.Collections, которая хранит элементы в виде объектов. В отличие от массива, она увеличивается и уменьшается во время выполнения и может содержать целые числа, строки и логические значения вместе в одном списке.

  • 🔄 Динамическое изменение размера: В ArrayList добавление и удаление элементов происходит во время выполнения, поэтому вам не нужно заранее фиксировать количество элементов, как в случае с массивом.
  • 📦 Хранение объекта: Каждый элемент хранится как объект, что позволяет одному ArrayList содержать данные разных типов, таких как int, string и bool.
  • Основные методы: Функции Add, Insert, Remove, RemoveAt, Contains и Sort охватывают повседневные операции с ArrayList.
  • 📊 Количество и вместимость: Свойство Count возвращает текущее количество элементов, а Capacity — выделенное пространство для хранения.
  • Современный выбор: Microsoft Рекомендуется использовать универсальный список (List) для нового кода, поскольку он обеспечивает типобезопасность на этапе компиляции и позволяет избежать упаковки типов.
  • 🤖 Помощь ИИ: GitHub Copilot генерирует код для ArrayList, а конвейеры ML.NET передают данные через типы коллекций C#.

C# ArrayList

Что такое ArrayList в С#?

Коллекция ArrayList похожа на Массивы тип данных в C#. Самым большим отличием является динамическая природа коллекции списков массивов.

Для массивов вам необходимо определить количество элементов, которые массив может содержать во время объявления массива. Но в случае с коллекцией Array List это не нужно делать заранее. Элементы можно добавлять или удалять из коллекции Array List в любой момент времени. Давайте рассмотрим операции, доступные для коллекции списков массивов, более подробно.

Объявление списка массивов

Объявление ArrayList представлено ниже. Список массивов создается с помощью типа данных ArrayList. Ключевое слово «new» используется для создания объекта ArrayList. Затем объект присваивается переменной a1. Итак, теперь переменная a1 будет использоваться для доступа к различным элементам списка массива.

ArrayList a1 = new ArrayList()

Добавление элементов в массив

Метод add используется для добавления элемента в ArrayList. Метод add можно использовать для добавления элемента любого типа данных в список массива. Таким образом, вы можете добавить целое число, строку или даже логическое значение в список массивов. Общий синтаксис метода сложения приведен ниже.

ArrayList.add(element)

Ниже приведены несколько примеров использования метода «добавить». Метод add можно использовать для добавления различных типов данных в коллекцию списка массивов.

Ниже вы можете увидеть примеры того, как мы можем добавлять целочисленные строки и даже логические значения в коллекцию списка массивов.

  • a1.add(1) – это добавит в коллекцию целочисленное значение.
  • a1.add («Пример») – это добавит строковое значение в коллекцию.
  • a1.add(true) – это добавит логическое значение в коллекцию.

Теперь давайте посмотрим, как это работает на уровне кода. Весь приведенный ниже код будет записан в наше консольное приложение. Код будет записан в наш файл Program.cs.

В приведенной ниже программе мы напишем код для создания нового списка массивов. Мы также покажем, как добавлять элементы и отображать элементы списка массивов.

ArrayList в C #

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Объяснение:-

  1. Первый шаг используется для объявления нашего списка массивов. Здесь мы объявляем a1 как переменную для хранения элементов нашего списка массивов.
  2. Затем мы используем ключевое слово add, чтобы добавить число 1, строку «Пример» и логическое значение «истина» в список массивов.
  3. Затем мы используем метод Console.WriteLine для отображения значения каждого элемента списка массива на консоли. Вы заметите, что, как и в случае с массивами, мы можем получить доступ к элементам через их индексные позиции. Поэтому для доступа к первой позиции списка массивов мы используем позицию индекса [0]. И так далее и тому подобное.

Если приведенный выше код введен правильно и программа запущена, будет отображен следующий вывод.

Выход:

ArrayList в C #

Из вывода вы можете видеть, что все элементы из списка массива отправляются на консоль.

Давайте рассмотрим еще несколько методов, доступных как часть ArrayList.

Количество

Этот метод используется для получения количества элементов в коллекции ArrayList. Ниже приведен общий синтаксис этого утверждения.

ArrayList.Count() – этот метод вернет количество элементов, содержащихся в списке массива.

Комплект

Этот метод используется для проверки наличия элемента в коллекции ArrayList. Ниже приведен общий синтаксис этого оператора.

ArrayList.Contains(element) – этот метод вернет true, если элемент присутствует в списке, в противном случае он вернет false.

Удалитьат

Этот метод используется для удаления элемента в определенной позиции коллекции ArrayList. Ниже приведен общий синтаксис этого оператора.

ArrayList.RemoveAt(index) – этот метод удалит элемент из определенной позиции списка массивов.

Теперь давайте посмотрим, как это работает на уровне кода. Весь приведенный ниже код будет записан в наше консольное приложение. Код будет записан в наш файл Program.cs.

В приведенной ниже программе мы напишем код, чтобы увидеть, как мы можем использовать вышеупомянутые методы.

ArrayList в C #

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Объяснение:-

  1. Итак, первое свойство, которое мы видим, — это свойство Count. Мы получаем свойство Count списка массивов a1 и затем записываем его в консоль.
  2. Во второй части мы используем метод contains, чтобы проверить, содержит ли ArrayList a1 элемент 2. Затем мы записываем результат в консоль с помощью команды Writeline.
  3. Наконец, чтобы продемонстрировать метод Удалить элемент, мы выполняем следующие шаги:
    1. Сначала мы записываем значение элемента в индексной позиции 1 списка массивов на консоль.
    2. Затем мы удаляем элемент в индексной позиции 1 списка массивов.
    3. Наконец, мы снова записываем в консоль значение элемента в индексной позиции 1 списка массивов. Этот набор шагов даст четкое представление о том, будет ли метод удаления работать должным образом.

Если приведенный выше код введен правильно и программа запущена, будет отображен следующий вывод.

Выход:

ArrayList в C #

Почему последнее значение верно?

Если вы видите последовательность событий, элемент Пример удаляется из массива, поскольку он находится в позиции 1. Позиция 1 массива затем заменяется тем, что было в позиции 2 ранее, и имеет значение «истина».

Как пройтись циклом по ArrayList в C#

Чтение каждого элемента ArrayList — распространённая задача. Поскольку ArrayList хранит свои элементы в виде объектов, вы можете обращаться к ним с помощью цикла foreach или цикла for, использующего свойство Count. Цикл foreach — самый простой способ, поскольку он проходит по каждому элементу по порядку без необходимости использования индекса.

В приведенном ниже примере создается список строк (ArrayList) и каждое значение выводится на отдельной строке. Код написан в файле Program.cs консольного приложения.

Шаг 1) Импортируйте пространство имен System.Collections и создайте ArrayList с тремя элементами.

Шаг 2) Используйте цикл foreach, чтобы прочитать каждый элемент как объект и вывести его в консоль.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Объяснение:-

  1. Пространство имен System.Collections импортируется, поэтому тип ArrayList доступен программе.
  2. С помощью метода Add в ArrayList добавляются три строковых значения.
  3. Цикл foreach считывает каждый элемент как объект, а метод Console.WriteLine выводит его на новую строку.

При запуске программа выводит сообщение на экран. Java, Python и Котлин на отдельных строках. Цикл for со свойством Count даст тот же результат, а также позволит использовать индекс каждого элемента.

Методы и свойства ArrayList в C#

Класс ArrayList предоставляет множество встроенных методов и свойств для управления своими элементами. Помимо добавления и удаления элементов, он может сортировать, искать и переворачивать коллекцию. Наиболее распространенные члены перечислены ниже.

Член Описание
Добавить Добавляет один элемент в конец списка ArrayList.
Вставить Добавляет элемент в позицию с определенным индексом.
Удалить Удаляет первое вхождение определенного элемента.
Удалитьат Удаляет элемент по заданному индексу.
Очистить Удаляет все элементы из ArrayList.
Сортировать Сортирует элементы в порядке возрастания.
Reverse Reverses — порядок элементов в списке.
Комплект Возвращает true, если заданный элемент существует в списке.
Индекс чего-либо Возвращает индекс заданного элемента.
Количество Свойство, возвращающее количество сохраненных элементов.
Рабочий диапазон Свойство, возвращающее количество элементов, которое может содержать список.

Эти элементы позволяют добавлять, находить, упорядочивать и удалять элементы без необходимости писать собственную логику, что является одним из главных преимуществ использования коллекций по сравнению с обычным массивом.

Разница между ArrayList и List в C#

И ArrayList, и обобщенный Список Они хранят группу элементов, которая может увеличиваться во время выполнения, но различаются по способу обработки типов. Знание этих различий поможет выбрать подходящий вариант для современного кода на C#.

Основные различия перечислены ниже:

  • Тип безопасности: В ArrayList каждый элемент хранится как объект, тогда как List привязан к одному объявленному типу и проверяется во время компиляции.
  • Производительность: ArrayList упаковывает и распаковывает значения таких типов, как int, что занимает время, тогда как List избегает упаковки, что обеспечивает более высокую скорость.
  • Пространство имен: Класс ArrayList находится в System.Collections, а класс List — в System.Collections.Generic.
  • Кастинг: При чтении из ArrayList часто требуется приведение типа к исходному, тогда как List возвращает правильный тип напрямую.
  • Рекомендация: Microsoft Рекомендуется использовать List для новых разработок, поскольку это безопаснее, быстрее и проще для чтения.

Вкратце, ArrayList полезен для понимания старого кода или хранения данных смешанных типов, в то время как List является предпочтительным выбором для большинства современных приложений.

Часто задаваемые вопросы (FAQ)

Массив имеет фиксированный размер и хранит один тип данных, заданный при объявлении. ArrayList увеличивается и уменьшается во время выполнения и хранит каждый элемент как объект, поэтому он может содержать данные разных типов в одном списке.

ArrayList не удаляется, но Microsoft Не рекомендуется использовать его для новых разработок. Предпочтительнее использовать универсальный класс List из System.Collections.Generic, поскольку он обеспечивает типобезопасность и лучшую производительность, поэтому большинство современного кода на C# использует List вместо List.

Поскольку ArrayList хранит элементы как объекты, добавление значения типа int оборачивает его в объект, что является упаковкой. Чтение обратно и приведение к исходному типу — это распаковка. Оба шага снижают производительность, чего List избегает.

ArrayList поддерживает одновременное чтение несколькими пользователями, но потокобезопасность элементов экземпляра при изменении коллекции не гарантируется. Для безопасной многопоточной записи следует обернуть его в ArrayList.SyncИспользуйте хронизированный метод или параллельную коллекцию.

Count — это количество элементов, хранящихся в ArrayList в данный момент. Capacity — это общее количество элементов, которое может вместить ArrayList до изменения размера. Capacity всегда равно или больше Count и автоматически увеличивается по мере добавления элементов.

Вы можете скопировать элементы в строго типизированный список с помощью методов Cast и ToList, или вызвать метод ToArray, чтобы получить массив объектов. Преобразование в универсальный список является распространенной практикой, поскольку оно восстанавливает типобезопасность.

Да. GitHub Copilot позволяет записывать объявления ArrayList, добавлять и удалять вызовы, а также циклы, используя короткий комментарий или имя метода. Он также часто предлагает универсальную версию List, поскольку это рекомендуемая коллекция для нового кода на C#.

ML.NET обычно считывает обучающие данные через универсальные коллекции, такие как List и IEnumerable, которые соответствуют конвейеру IDataView. Неуниверсальный ArrayList используется редко напрямую, поскольку строго типизированная коллекция обеспечивает ясность и типобезопасность данных для машинного обучения.

Подведем итог этой публикации следующим образом: