
- •А.А. Волосевич
- •1. Работа с Числами
- •2. Дата и время
- •3. Работа со строками и текстом
- •4. Преобразование информации
- •5. Отношения равенства и порядка
- •Сравнение для выяснения равенства
- •Сравнение для выяснения порядка
- •6. Жизненный цикл объектов
- •Алгоритм «сборки мусора»
- •Финализаторы и интерфейс iDisposable
- •7. Перечислители и итераторы
- •8. Интерфейсы стандартных коллекций
- •9. Массивы и класс system.Array
- •10. Типы для работы с коллекциями-списками
- •11. Типы для работы с коллекциями-множествами
- •12. Типы для работы с коллекциями-словарями
- •13. Типы для создания пользовательских коллекций
- •14. Технология linq to objects
- •1. Оператор условия Where().
- •2. Операторы проекций.
- •3. Операторы упорядочивания.
- •4. Оператор группировки GroupBy().
- •5. Операторы соединения.
- •6. Операторы работы с множествами.
- •7. Операторы агрегирования.
- •8. Операторы генерирования.
- •9. Операторы кванторов и сравнения.
- •10. Операторы разбиения.
- •11. Операторы элемента.
- •12. Операторы преобразования.
- •15. Работа с объектами файЛовой системы
- •16. Ввод и вывод информации
- •Потоки данных и декораторы потоков
- •2. Классы для работы с потоками, связанными с хранилищами.
- •3. Декораторы потоков.
- •4. Адаптеры потоков.
- •Адаптеры потоков
- •17. Основы xml
- •18. Технология linq to xml
- •Создание, сохранение, загрузка xml
- •Запросы, модификация и трансформация xml
- •Пространства имён xml
- •19. ДОполнительные возможности обработки xml
- •20. Сериализация
- •Сериализация времени выполнения
- •Сериализация контрактов данных
- •21. Состав и взаимодействие сборок
- •22. Метаданные и получение информации о типах
- •23. Позднее связывание и кодогенерация
- •24. Динамические типы
- •25. Атрибуты
- •26. Файлы конфигуРации
- •27. Основы мНогопоточноГо программирования
- •28. Синхронизация потоков
- •29. Библиотека параллельных расширений
- •Параллелизм на уровне задач
- •Параллелизм при императивной обработке данных
- •Параллелизм при декларативной обработке данных
- •Обработка исключений и отмена выполнения задач
- •Коллекции, поддерживающие параллелизм
- •30. Асинхронный вызов методов
- •31. Процессы и домены
- •32. Безопасность
- •Разрешения на доступ
- •Изолированные хранилища
- •Криптография
- •33. Диагностика
9. Операторы кванторов и сравнения.
Операторы кванторов похожи на соответствующие операторы в математической логике.
bool Any<T>(this IEnumerable<T> source, Func<T, bool> predicate);
bool Any<T>(this IEnumerable<T> source);
bool All<T>(this IEnumerable<T> source, Func<T, bool> predicate);
bool Contains<T>(this IEnumerable<T> source, T value);
bool Contains<T>(this IEnumerable<T> source, T value,
IEqualityComparer<T> comparer)
Оператор Any() проверяет наличие хотя бы одного элемента в коллекции, удовлетворяющего указанному предикату. Вторая версия оператора Any() просто проверяет коллекцию на непустоту. Оператор All() возвращает true, если все элементы коллекции удовлетворяют предикату. И, наконец, оператор Contains() проверяет, входит ли заданное значение в коллекцию.
Оператор SequenceEqual() сравнивает две коллекции и возвращает true, если обе коллекции имеют одинаковую длину и их соответствующие элементы равны:
bool SequenceEqual<T>(this IEnumerable<T> first,
IEnumerable<T> second);
bool SequenceEqual<T>(this IEnumerable<T> first,
IEnumerable<T> second,
IEqualityComparer<T> comparer);
10. Операторы разбиения.
Операторы разбиения выделяют некую часть исходной коллекции (например, первые десять элементов).
IEnumerable<T> Take<T>(this IEnumerable<T> source, int count);
IEnumerable<T> TakeWhile<T>(this IEnumerable<T> source,
Func<T, bool> predicate);
IEnumerable<T> Skip<T>(this IEnumerable<T> source, int count);
IEnumerable<T> SkipWhile<T>(this IEnumerable<T> source,
Func<T, bool> predicate);
11. Операторы элемента.
Эта группа операторов предназначена для выделения из коллекции единственного элемента, удовлетворяющего определённым условиям.
Оператор First() выделяет первый элемент (или первый элемент, удовлетворяющий определённому предикату).
T First<T>(this IEnumerable<T> source);
T First<T>(this IEnumerable<T> source, Func<T, bool> predicate);
Если в коллекции нет элементов, или не нашлось элементов, удовлетворяющих предикату, оператор First() выбрасывает исключение InvalidOperationException. Если требуется, чтобы исключение не выбрасывалось, а возвращалось предопределённое значение для типа, следует использовать оператор FirstOrDefault().
T FirstOrDefault<T>(this IEnumerable<T> source);
T FirstOrDefault<T>(this IEnumerable<T> source,
Func<T, bool> predicate);
Аналогично работают операторы Last() и LastOrDefault() для выделения последнего элемента.
Операторы Single() и SingleOrDefault() рассчитаны на то, что коллекция (или набор элементов, удовлетворяющих предикату) будет состоять из одного элемента, который данные операторы и возвращают. Если в коллекции нет элементов, или их оказалось больше одного, оператор Single() выбрасывает исключение InvalidOperationException. Оператор SingleOrDefault() выбрасывает такое исключение, если элементов оказалось больше одного.
Пара операторов ElementAt() и ElementAtOrDefault() пытаются вернуть элемент на указанной целочисленной позиции.
Оператор DefaultIfEmpty() проверяет коллекцию на пустоту. Если в коллекции нет элементов, то возвращается или значение по умолчанию для типа, или указанное значение. Если коллекция непустая, то она и возвращается.
IEnumerable<T> DefaultIfEmpty<T>(this IEnumerable<T> source);
IEnumerable<T> DefaultIfEmpty<T>(this IEnumerable<T> source,
T defaultValue);