Рассылка закрыта
При закрытии подписчики были переданы в рассылку "BloggLand и Я | Блоггландия" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Октябрь 2006 → | ||||||
1
|
||||||
---|---|---|---|---|---|---|
3
|
4
|
5
|
6
|
7
|
8
|
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
22
|
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
Статистика
0 за неделю
Статья из №11 журнала Алгоритм "Утреннее прикосновение шаблонов".
.Net Собеседник #63СодержаниеОт автораЗдравствуйте, коллеги! Напоминаю адрес сайта журнала - http://dotnetgrains.sql.ru/alg/alg.htm Не забывайте о подписке - подписной индекс для Украины 91132 в Укрпочте, для РФ - подписка через WebMoney . Подробнее на сайте журнала. Утреннее прикосновение шаблонов
Автор: Ч.Калверт
Эта статья задумывалась как мягкое введение в тему шаблонов. И это первая
статья, написанная мною на эту тему.
Зачем использовать шаблоны
Шаблоны помогают разработчикам писать код, который легко использовать повторно
с разными типами. Также они облегчают написание самоописывающего кода. В
частности, они могут помочь вам избежать написания сбивающего с толку
синтаксиса и побочных эффектов, проявляющихся при использовании приведения
типов и их упаковке-распаковке. Если вы пишите контейнеры, то они пригодятся
вам при написании одного класса, работающего с несколькими типами – иначе вам
придётся писать реализацию такого класса для каждого используемого типа.
Мы поместили три разных типа в коллекцию. Конкретно – мы добавили переменные
типа String, Integer и переменную типа с плавающей точкой в одну коллекцию.
Но мы не станем углубляться в эту сторону. Уже и так ясно, что класс ArrayList
имеет как плюсы в гибкости, так и минусы в безопасности при написании кода.
Шаблоны и безопасность типов Теперь рассмотрим пример того, как шаблоны поддерживают безопасность типов при разработке. Вот пример, в котором показано, как с помощью шаблонов достигается та безопасность при использовании типов, которой не было ранее – при использовании коллекций в C#, таких как ArrayList:
В первой строке этого кода объявляется типобезопасный шаблон класса List.
Конкретно этот экземпляр работает с типом string, что указано в угловых
скобках. В результате в данный контейнер можно добавить только переменные типа
string. Попытка добавления переменных типа Integer или Float приведет в
результате к ошибке компиляции. Генерация ошибки на стадии компиляции, а не во
время выполнения и есть наибольшее преимущество шаблонов.
Ключевым моментом в этом параграфе является наличие ошибок компиляции в строчках 3 и 4 выше приведенного примера. Невозможно добавить в коллекцию типы, отличные от string в экземпляр шаблона класса List. Результат: вам нет необходимости беспокоиться о типе переменной, возвращаемой этим классом. Именно поэтому отпадает и необходимость приведения типов. Рассмотрим шаблоны подробнее
Код, который был рассмотрен ранее, был максимально прост и прозрачен для того,
чтобы вы могли сосредоточиться на теоретической части использования шаблонов.
Теперь нужно углубиться в тему, для чего рассмотрим более сложный пример
программирования с использованием типов.
Эти примеры тоже достаточно просты. В метод AddSampleData мы передаём класс
List типа string, где и добавляем в него некие данные. После вызова метода
список будет содержать как минимум две строки. Метод CreateSimpleList является
примером вызова метода AddSampleData. Отметьте создание экземпляра класса в
строке 9, а также вызов метода AddSampleData в строке 12.
Для программиста это просто рай. Вызов метода CreateSimpleList приводит к созданию инициализированного экземпляра класса List, а конструкция foreach добавляет членов коллекции к списку. И ещё подробнее Читайте в журнале №11 АЛГОРИТМ Итоги
И вот мы достигли точки, начиная с которой всё становится ещё интереснее или
сложнее – это уж как вам нравится. У вас могут возникнуть такие вопросы, как:
Удачного кодирования! Полную версию статьи смотрите в №11 журнала АЛГОРИТМ в конце октября 2006 года.
На этом шестьдесят третий выпуск .Net Собеседника закончен.
Чужа Виталий Ф. aka hDrummer, MCAD.Net, MCDBA, MCP hdrummer ухо gmail точка ru - жду ваши предложения и замечания. |
В избранное | ||