Обзор средств, добавленных в С# 2.0

Со времен начального выпуска в конце 2000 г. язык С# заметно эволюционировал. Эта эволюция стала возможной благодаря его широкому распространению. С появлением версии Visual Studio 2005 и .NET Framework 2.0 компилятор С# стал поддерживать расширения языка С# 2.0. Это стало отличной новостью, поскольку в С# 2.0 были включены некоторые удобные средства, обеспечивающие более естественный стиль программирования с большей эффективностью.

Возможно, наиболее важным дополнением С# 2.0 стала поддержка обобщений. Их синтаксис подобен шаблонам С++, но основное отличие состоит в том, что конструируемые типы, созданные на основе обобщений .NET, являются динамичными по своей природе, т.е. они привязываются и конструируются во время выполнения. Это отличает их от конкретных типов С++, создаваемых из шаблонов, которые являются статичными — в том смысле, что связываются и создаются во время компиляции.

Обобщения наиболее удобны, когда они применяются с контейнерными типами вроде векторов, списков и хеш-таблиц, где они обеспечивают великолепную эффективность. Обобщения могут трактовать типы, которые они содержат, как специфические типы, а не как базовый тип всех объектов — System.Object.

В С# 2.0 была добавлена поддержка анонимных методов. Анонимный метод — это то, что иногда называют лямбда-функцией; данная концепция пришла в С# из функционального программирования. Анонимные методы С# исключительно полезны для работы с делегатами и событиями. Делегаты и события — это конструкции, используемые для регистрации методов обратного вызова, которые вызываются при их инициации.

Обычно они привязываются к некоторому где-то определенному методу. Но благодаря анонимным методам, код делегатов или событий можно определять методом встраивания — прямо в той точке, где делегат или событие устанавливается.

Это удобно, если делегат просто должен выполнить небольшой кусочек работы, для которого определение отдельного метода было бы избыточно. Что еще лучше, так это то, что тело анонимного метода имеет доступ ко всем переменным, находящимся в контексте той точки, где этот метод определен6.

Лямбда-выражения — новшество в С# 3.0 — призваны прийти на замену анонимным методам, и позволяют писать более читабельный код.

В С# 2.0 появилась поддержка итераторов. Любой, кто знаком со стандартной библиотекой шаблонов С++ (Standard Template Library — STL), знаком также с итераторами и приносимой ими пользой. В С# обычно используется оператор f oreach для выполнения прохода (итерации) по объекту, ведущему себя как коллекция. Этот объект коллекции должен реализовывать интерфейс lEnumerable, включающий метод GetEnumerator. Реализация метода GetEnumerator для контейнерных типов обычно очень утомительна. Однако при использовании итераторов С# реализация этого метода становится элементарной.

И, наконец, в С# 2.0 была добавлена поддержка частичных типов (partial types). До появления С# 2.0 вы должны были определять каждый класс С# целиком в одном файле (также называемом единицей компиляции). Это требование было снято для того, чтобы можно было создавать “скелетный” код. Например, с помощью многочисленных мастеров Visual Studio можно генерировать такие полезные вещи, как типы-наследники System.Data.DataSet, позволяющие обращаться к информации в базе данных.

До появления С# 2.0 вносить изменения в сгенерированный код было проблематично. Нужно было либо наследоваться от него, либо редактировать автоматически сгенерированный код. Редактирование сгенерированного кода — дело рискованное, поскольку внесенные изменения обычно теряются после того, как мастер по той или иной причине повторно сгенерирует код.

Частичные типы решили эту проблему, поскольку теперь можно помещать сгенерированный код в отдельный файл, так что вносимые изменения не будут теряться после его перегенерации. Чтобы увидеть отличный пример применения частичных типов, загляните в код, сгенерированный в результате создания приложения Windows Fbrms в Visual Studio.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100