Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 197 стр.

UptoLike

Составители: 

197
10.4. Типизированные классы DataSet
Класс DataSet не являются строго типизированным, так как в
нем каждый элемент данных имеет тип object. В связи с этим, для вы-
полнения над ним любые действий, специфичных для некоторого типа,
этот объект следует преобразовать в соответствующий тип (выполнять
кастинг). При использовании нестрого типизированных переменных ве-
роятны ошибки из-за несоответствия типов, которые весьма непросто
найти и устранить. ADO.NET также поддерживает типизированный
класс DataSet, альтернатива применению нестрого типизированных
переменных.
У объекта типизированного класса DataSet, как можно предпо-
ложить по его названию, все элементы строго типизированы (имеют
конкретный тип). На таблицы и поля такого объекта DataSet можно
ссылаться по их дружественным именам, представляющим реальные
имена таблиц и столбцов, с которыми выполняется работа; их значения
доступны в виде значений соответствующих типов, а не объектов. Это
дает приложению целый ряд преимуществ.
Во-первых, код программы становится более понятным и его
удобнее сопровождать. Во-вторых, ошибки из-за несоответствия типов
обнаруживаются в период компиляции, а не в период выполнения это
экономит время, необходимое для тестирования. Наконец, полные име-
на членов коллекций (например, Tables) допустимо заменять их дру-
жественными именами, при этом в период разработки, имена типизиро-
ванных членов данных отображаются в окнах среды разработки благо-
даря технологии Intellisense.
Ниже приводится пример эквивалентных строк кода, использую-
щих типизированные и не типизированные объекты DataSet. Оба при-
мера возвращают значения поля OrderID первой записи таблицы Or-
ders в результирующем наборе dsOrders. Для не типизированного
объекта DataSet получить это значение можно сделать следующим об-
разом:
string myOrder =
(string)dsOrders.Tables["Orders"].Rows[0]["OrderID"];
А типизированных объектов DataSet выполняется так, как пока-
зано ниже:
string myOrder = dsOrders.Orders[0].OrderID;
Как видно, второй фрагмент существенно проще, более понятный
и не требует явного преобразования типов. В действительности типизи-
рованный DataSet это экземпляр совсем другого класса, производно-
го от DataSet. Структура этого класса определяется файлом схемы