Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
// Для доступа к ArrayList потребуется импортировать
// пространство имен System.Collections.
using System.Collections;
ArrayList strArray = new ArrayList();
strArray.AddRange(new string[] { "First", "Second", "Third" });
// Отобразить количество элементов в ArrayList.
System.Console.WriteLine("This collection has {0} items.", strArray.Count);
System.Console.WriteLine();
// Добавить новый элемент и отобразить текущее их количество.
strArray.Add("Fourth!");
System.Console.WriteLine("This collection has {0} items.", strArray.Count);
// Отобразить содержимое.
foreach (string s in strArray)
{
System.Console.WriteLine("Entry: {0}", s);
}
System.Console.WriteLine();
Обратите внимание, что вы можете добавлять (и удалять) элементы на лету, а контейнер автоматически будет соответствующим образом изменять свой размер.
Как вы могли догадаться, помимо свойства
Count
AddRange()
Add()
ArrayList
System.Collections
Stack
Queue
Однако важно отметить, что в большинстве ваших проектов .NET Core классы коллекций из пространства имен
System.Collections
System.Collections.Generic
System.Collections
Обзор пространства имен System.Collections.Specialized
System.Collections
System.Collections.Specialized

Кроме указанных конкретных типов классов пространство имен
System.Collections.Specialized
System.Collections.Generic
На заметку! В библиотеках базовых классов .NET Core доступны два дополнительных пространства имен, связанные с коллекциями (
System.Collections.ObjectModel
System.Collections.Concurrent
System.Collections.Concurrent
Проблемы, присущие необобщенным коллекциям
Хотя на протяжении многих лет с использованием необобщенных классов коллекций (и интерфейсов) было построено немало успешных приложений .NET и .NET Core, опыт показал, что применение этих типов может привести к возникновению ряда проблем.
Первая проблема заключается в том, что использование классов коллекций
System.Collections
System.Collections.Specialized
System.Object
Вторая проблема связана с тем, что большинство необобщенных классов коллекций не являются безопасными в отношении типов, т.к. они были созданы для работы с
System.Object
Прежде чем вы увидите, как применять обобщения в своих программах, полезно чуть глубже рассмотреть недостатки необобщенных классов коллекций, что поможет лучше понять проблемы, которые был призван решить механизм обобщений. Создайте новый проект консольного приложения по имени
IssuesWithNongenericCollections
System
System.Collections
Program.cs
using System;
using System.Collections;
Проблема производительности
Как уже было указано в главе 4, платформа .NET Core поддерживает две обширные категории данных: типы значений и ссылочные типы. Поскольку в .NET Core определены две основные категории типов, временами возникает необходимость представить переменную одной категории как переменную другой категории. Для этого в C# предлагается простой механизм, называемый упаковкой (boxing), который позволяет хранить данные типа значения внутри ссылочной переменной. Предположим, что в методе по имени
SimpleBoxUnboxOperation()
int