Коллекции
Коллекции в C# представляют собой структуры данных, которые позволяют эффективно хранить, управлять и обрабатывать группы объектов. В отличие от массивов, коллекции динамические, предлагают методы для поиска, сортировки, фильтрации и итерации, что делает их ключевыми для создания масштабируемых и производительных приложений. Использование коллекций позволяет применять принципы объектно-ориентированного программирования (ООП), такие как инкапсуляция, наследование и полиморфизм, и упрощает реализацию сложных алгоритмов.
В C# наиболее часто используются следующие коллекции: List, Dictionary, HashSet, Queue и Stack. List подходит для упорядоченных динамических данных, Dictionary обеспечивает быстрый доступ к значениям по ключу, HashSet хранит уникальные элементы без определенного порядка, Queue работает по принципу FIFO (first-in, first-out), а Stack — по принципу LIFO (last-in, first-out). Правильный выбор коллекции влияет на производительность, поддерживаемость и предотвращение ошибок, таких как дубликаты или выход за пределы индекса.
В этом уроке вы научитесь добавлять, удалять, искать и перебирать элементы коллекций, а также применять обработку исключений, оптимизацию и интеграцию с архитектурой программного обеспечения. После изучения материала разработчик сможет использовать коллекции стратегически, создавая безопасный, эффективный и масштабируемый код в реальных проектах на C#.
Базовый Пример
textusing System;
using System.Collections.Generic;
namespace CollectionsExample
{
class Program
{
static void Main(string\[] args)
{
// Создание динамического списка чисел
List<int> numbers = new List<int>();
// Добавление элементов
numbers.Add(10);
numbers.Add(20);
numbers.Add(30);
// Вывод элементов
Console.WriteLine("Список чисел:");
foreach (int num in numbers)
{
Console.WriteLine(num);
}
// Проверка наличия элемента
if (numbers.Contains(20))
{
Console.WriteLine("Число 20 присутствует в списке.");
}
// Удаление элемента
numbers.Remove(10);
Console.WriteLine("После удаления 10:");
numbers.ForEach(n => Console.WriteLine(n));
}
}
}
В данном примере используется List
Использование обобщений обеспечивает типовую безопасность, предотвращая ошибки приведения типов и исключения во время выполнения. List подходит для последовательного хранения данных и гибко применяется в различных сценариях, таких как списки пользователей, задач или числовых значений. Этот подход подготавливает разработчика к работе с более сложными коллекциями и их применением в проектах различной сложности.
Практический Пример
textusing System;
using System.Collections.Generic;
namespace AdvancedCollections
{
class Product
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Создание словаря продуктов
Dictionary<int, Product> products = new Dictionary<int, Product>();
// Добавление продуктов
products.Add(1, new Product { Id = 1, Name = "Laptop", Price = 4500 });
products.Add(2, new Product { Id = 2, Name = "Mouse", Price = 150 });
products.Add(3, new Product { Id = 3, Name = "Keyboard", Price = 300 });
// Вывод продуктов с ценой выше 200
Console.WriteLine("Продукты с ценой выше 200:");
foreach (var product in products.Values)
{
if (product.Price > 200)
Console.WriteLine($"{product.Name} - Цена: {product.Price}");
}
// Обработка ошибки при добавлении дублирующего ключа
try
{
products.Add(2, new Product { Id = 2, Name = "Monitor", Price = 1200 });
}
catch (ArgumentException ex)
{
Console.WriteLine("Ошибка: дублирующий ключ. " + ex.Message);
}
}
}
}
В этом примере используется Dictionary\
Пример показывает, как выбор подходящей коллекции влияет на производительность и целостность данных, что важно для систем управления запасами, инвентаризации и анализа данных. Использование обобщений и ООП облегчает поддержку кода, масштабируемость и интеграцию с другими компонентами приложения.
Лучшие практики включают: выбор подходящей коллекции для конкретной задачи, использование foreach или LINQ для итерации, корректную обработку исключений и минимизацию ненужных копий данных. Типичные ошибки: использование List для частых поисков, игнорирование дублирующих ключей в Dictionary, создание лишнего объема памяти. Инструменты отладки помогают выявлять проблемы, а оптимизация включает выбор правильной коллекции и сокращение затратных операций. Безопасность обеспечивается валидацией данных и предотвращением нарушений целостности.
📊 Справочная Таблица
C# Element/Concept | Description | Usage Example |
---|---|---|
List<T> | Хранит упорядоченные динамические элементы | List<int> numbers = new List<int>(); |
Dictionary\<TKey, TValue> | Отображение ключ-значение с быстрым доступом | Dictionary\<int, string> dict = new Dictionary\<int, string>(); |
HashSet<T> | Хранит уникальные элементы | HashSet<string> uniqueNames = new HashSet<string>(); |
Queue<T> | Структура FIFO (first-in, first-out) | Queue<int> queue = new Queue<int>(); |
Stack<T> | Структура LIFO (last-in, first-out) | Stack<int> stack = new Stack<int>(); |
Изучение коллекций в C# развивает понимание структур данных, алгоритмов и принципов ООП, позволяя создавать масштабируемые и надежные приложения. Следующим шагом рекомендуется изучение LINQ, потокобезопасных коллекций и шаблонов проектирования. В реальных проектах коллекции применяются для инвентаризации, кэширования, обработки данных и работы с большими массивами информации. Официальная документация и сообщества разработчиков обеспечивают постоянную поддержку для совершенствования навыков.
🧠 Проверьте Свои Знания
Проверьте Знания
Проверьте понимание темы практическими вопросами.
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху