Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #71, ОКТЯБРЬ 2006 г.

орки наступают

БОРИС ВОЛЬФСОН

Спецвыпуск: Хакер, номер #071, стр. 071-060-1


BORIS@SPLENDOT.COM HTTP://SPLENDOT.COM

C# 3.0 + LINQ = ЛЮБОВЬ

В ЭТОЙ СТАТЬЕ Я ХОЧУ РАССКАЗАТЬ О ПОСЛЕДНИХ ДОСТИЖЕНИЯХ В ОБЛАСТИ СОЗДАНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ. РЕЧЬ ПОЙДЕТ О ЯЗЫКЕ, КОТОРЫЙ ТОЛЬКО ГОТОВИТСЯ К ВЫХОДУ – C# ТРЕТЬЕЙ ВЕРСИИ. ЭТОТ ЯЗЫК БУДЕТ ВКЛЮЧЕН В СЛЕДУЮЩУЮ ВЕРСИЮ VISUAL STUDIO – ФЛАГМАНСКИЙ ПРОДУКТ КОМПАНИИ МАЙКРОСОФТ, КОТОРЫЙ ПОЛУЧИЛ КОДОВОЕ ИМЯ «ORCAS». LINQ – ЭТО НОВАЯ ЧАСТЬ ЯЗЫКА C# 3.0 (А ЗАОДНО И VISUAL BASIC 9.0)

[сначала был...]

Возможно, ты будешь смеяться, но сначала был Турбо Паскаль :). Да-да, именно этот синий монстр, который сейчас наводит страх на многих программистов. Этот компилятор разработал Андерс Хейлсберг, чье имя можно увидеть в окне «About» Турбо Паскаля. Но время шло - наступила пора Windows, а DOS отошел в мир иной. Общеизвестно, что фирма Борланд выпускает новую интегрированную среду разработки приложений Delphi.

Догадайся, кто возглавлял группу разработчиков Delphi? А откуда в C# появились свойства, система обработки событий и многое другое? Хотя стоп, я забегаю немного вперед, ведь следующий этап нашей истории – появление .NET – технологии Майкрософт, сердцем которой стал новый язык C#. Первая версия языка была очень похожа на Java версии 1.4, хотя и содержала ряд усовершенствований. В октябре 2003 года общественности стала доступна вторая версия языка, главной фишкой которой была работа с генериками (generics) – аналогом шаблонов в языке С++. Теперь на пороге третья версия, которую мы и рассмотрим подробно.

[новые фичи языка C# 3.0.]

Для начала проверим, что за зверь этот третий си шарп. Самым революционным введением является, конечно же, LINQ (Language-Integrated Query). Фактически, это встроенный язык структурированных запросов, который можно использовать для контейнеров, XML-данных и баз данных. Другим нововведением являются лямбда-выражения, которые служат удобной заменой делегатам. Также в новой версии языка можно инициализировать свойства объекта при его создании, что позволяет немного сократить код:

var man = new Man { Name = “Адам”; }

Есть новая фишка для самых ленивых программистов, которые не любят писать тип локальных переменных - пишем просто var:

var s = “Привет”

Если серьезно, это нам очень пригодится при получении результатов LINQ-запросов. К тому же, необязательность указания типа отнюдь не нарушает строгую типизацию языка, так как компилятор сам определяет тип локальной переменной, - фактически мы просто устранили дублирование.

Дальше по списку идут типы без имени, которые позволяют создавать объекты без указания типа:

var man = new { Name = “Адам”; }

И, наконец, еще одна новая фишка в ООП - возможность расширять уже существующие классы методами. Для этого служат, как ни странно, методы-расширения :).

Подробные сведения можно найти в официальных документах на сайте microsoft.com – конкретные адреса даны на врезке, а мы переходим к главному блюду.

[LINQ.]

Есть такой замечательный язык SQL, который отличается от привычных языков тем, что он является декларативным, то есть на нем не надо описывать, как решить задачу, а достаточно описать, что должно получиться в результате. Хотим получить список книг ценой более двухсот рублей, упорядоченных по имени автора, - так и пишем:

Содержание  Вперед на стр. 071-060-2