Загрузка...

Коллекции

Коллекции в C# представляют собой структуры данных, которые позволяют эффективно хранить, управлять и обрабатывать группы объектов. В отличие от массивов, коллекции динамические, предлагают методы для поиска, сортировки, фильтрации и итерации, что делает их ключевыми для создания масштабируемых и производительных приложений. Использование коллекций позволяет применять принципы объектно-ориентированного программирования (ООП), такие как инкапсуляция, наследование и полиморфизм, и упрощает реализацию сложных алгоритмов.
В C# наиболее часто используются следующие коллекции: List, Dictionary, HashSet, Queue и Stack. List подходит для упорядоченных динамических данных, Dictionary обеспечивает быстрый доступ к значениям по ключу, HashSet хранит уникальные элементы без определенного порядка, Queue работает по принципу FIFO (first-in, first-out), а Stack — по принципу LIFO (last-in, first-out). Правильный выбор коллекции влияет на производительность, поддерживаемость и предотвращение ошибок, таких как дубликаты или выход за пределы индекса.
В этом уроке вы научитесь добавлять, удалять, искать и перебирать элементы коллекций, а также применять обработку исключений, оптимизацию и интеграцию с архитектурой программного обеспечения. После изучения материала разработчик сможет использовать коллекции стратегически, создавая безопасный, эффективный и масштабируемый код в реальных проектах на C#.

Базовый Пример

text
TEXT Code
using 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 для создания динамического списка. Методы Add(), Remove(), Contains() и ForEach демонстрируют основные операции: добавление, удаление, проверку и перебор элементов. Цикл foreach обеспечивает безопасную и эффективную итерацию, а метод ForEach с лямбда-выражением является компактной альтернативой для вывода.
Использование обобщений обеспечивает типовую безопасность, предотвращая ошибки приведения типов и исключения во время выполнения. List подходит для последовательного хранения данных и гибко применяется в различных сценариях, таких как списки пользователей, задач или числовых значений. Этот подход подготавливает разработчика к работе с более сложными коллекциями и их применением в проектах различной сложности.

Практический Пример

text
TEXT Code
using 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\ для демонстрации объектно-ориентированных коллекций, обеспечивая быстрый доступ к элементам по ключу. Перебор через products.Values сохраняет инкапсуляцию, а блок try-catch защищает от ошибок при добавлении дублирующих ключей.
Пример показывает, как выбор подходящей коллекции влияет на производительность и целостность данных, что важно для систем управления запасами, инвентаризации и анализа данных. Использование обобщений и ООП облегчает поддержку кода, масштабируемость и интеграцию с другими компонентами приложения.

Лучшие практики включают: выбор подходящей коллекции для конкретной задачи, использование 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, потокобезопасных коллекций и шаблонов проектирования. В реальных проектах коллекции применяются для инвентаризации, кэширования, обработки данных и работы с большими массивами информации. Официальная документация и сообщества разработчиков обеспечивают постоянную поддержку для совершенствования навыков.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Знания

Проверьте понимание темы практическими вопросами.

4
Вопросы
🎯
70%
Для Прохождения
♾️
Время
🔄
Попытки

📝 Инструкции

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