Часть IV. Дополнительные конструкции программирования на C#.
В этой части книги вы получите возможность углубить знания языка C# за счет изучения других более сложных (но очень важных) концепций. Здесь завершается ознакомление с системой типов .NET описанием интерфейсов и делегатов. Кроме того, будет рассмотрена роль обобщений, дано краткое введение в язык LINQ (Language Integrated Query) и представлены некоторые более сложные функциональные возможности C# (такие как методы расширения, частичные методы и манипулирование указателями).
Глава 9. Коллекции и обобщения
Эта глава посвящена обобщениям. Вы увидите, что программирование с использованием обобщений позволяет создавать типы и члены типов, содержащие заполнители,которые заполняются вызывающим кодом. В целом, обобщения позволяют значительно улучшить производительность приложений и безопасность в отношении типов. В главе не только рассматриваются различные обобщенные типы из пространства имен
System.Collections.Generic
, но также показано, как строить собственные обобщенные методы и типы (с ограничениями и без).
Глава 10. Делегаты, события и лямбда-выражения
В этой главе вы узнаете, что собой представляет тип делегата. Делегат .NET — это объект, который указывает на другие методы в приложении. С помощью делегатов можно создавать системы, позволяющие многочисленным объектам взаимодействовать между собой двухсторонним образом. После изучения способов применения делегатов в .NET будет показано, как использовать ключевое слово event в С#, которое упрощает манипулирование делегатами. Кроме того, рассматривается роль лямбда-операции (=>
) в C# и связь между делегатами, анонимными методами и лямбда-выражениями.
Глава 11. Расширенные средства языка C#.
В этой главе описаны расширенные средства языка С#, в том числе перегрузка операций и создание специальных процедур преобразования (явных и неявных) для типов.Кроме того, вы узнаете, как строить и взаимодействовать с индексаторами типов и работать с расширяющими методами, анонимными типами, частичными методами и указателями С#, используя контекст кода unsafe.
Глава 12. LINQ to Objects
В этой главе начинается рассмотрение языка интегрированных запросов LINQ (Language Integrated Query
). Язык LINQ позволяет создавать строго типизированные выражения запросов, которые могут применяться к многочисленным целевым объектам LINQ для манипулирования данными в самом широком смысле этого слова. Глава посвящена API-интерфейсу LINQ to Objects, который позволяет применять выражения LINQ к контейнерам данных (например, массивам, коллекциям и специальным типам).Эта информация будет полезна позже при рассмотрении других дополнительных APIинтерфейсов, таких как LINQ to XML, LINQ to DataSet, PLINQ и LINQ to Entities.
Глава 13. Время жизни объектов
В финальной главе этой части объясняется, как среда CLR управляет памятью, используя сборщик мусора .NET. Вы узнаете о роли корневых элементов приложения,поколениях объектов и типе System.GC. После представления основ рассматриваются темы освобождаемых объектов (реализующих интерфейс IDisposable) и процесса финализации (с помощью метода System.Object.Finalize()). В главе также описан класс Lazy<T>, позволяющий определять данные, которые не будут размещаться вплоть до поступления запроса от вызывающего кода. Вы увидите, что эта возможность очень полезна, когда нежелательно загромождать кучу объектами, которые в текущий момент программе не нужны.