Объектно-ориентированное программирование на С#. Андрианова А.А - 116 стр.

UptoLike

116
Глава 7. Обобщения
7.1. Обобщения. Основные понятия
Термин «обобщение», по существу, означает параметризированный
тип. Особая роль параметризированных типов состоит в том, что они
позволяют создавать классы, структуры, интерфейсы, методы и делегаты, в
которых тип обрабатываемых данных указываются в виде параметра. С
помощью обобщений можно, например, создать единый класс, который
автоматически становится пригодным для единообразной обработки
разнотипных данных. Класс, структура, интерфейс, метод или делегат,
оперирующий параметризированным типом данных, называется
обобщенным, как, например, обобщенный класс или обобщенный метод.
Следует особо подчеркнуть, что в С# имеется возможность создавать
обобщенный код, оперируя ссылками типа object. Класс object является
базовым для всех остальных классов, таким образом, по ссылке типа object
можно обращаться к объекту любого типа. Недостатком такого приема
является несоблюдение типовой безопасности. Для преобразования типа
object в конкретный тип данных необходимо приведение типов, которое
может быть источником ошибок.
Применение обобщений, напротив, обеспечивает типовую
безопасность и тем самым не требуют выполнения приведения типов для
преобразования объекта или другого типа обрабатываемых данных.
Таким образом, обобщения расширяют возможности повторного
использования кода и позволяют делать это надежно и просто.
Рассмотрим пример использования обобщений при разработке класса
для хранения множества элементов некоторого типа.
// обобщенный класс «Множество»
class Set<T>
{
// массив элементов множества,
// элементы имеют обобщенный тип Т
T[] elements;
// конструктор класса
public Set(T[] a)
{
                                            Глава 7. Обобщения


                       7.1. Обобщения. Основные понятия

      Термин «обобщение», по существу, означает параметризированный
тип. Особая роль параметризированных типов состоит в том, что они
позволяют создавать классы, структуры, интерфейсы, методы и делегаты, в
которых тип обрабатываемых данных указываются в виде параметра. С
помощью обобщений можно, например, создать единый класс, который
автоматически становится пригодным для единообразной обработки
разнотипных данных. Класс, структура, интерфейс, метод или делегат,
оперирующий      параметризированным      типом     данных,    называется
обобщенным, как, например, обобщенный класс или обобщенный метод.
      Следует особо подчеркнуть, что в С# имеется возможность создавать
обобщенный код, оперируя ссылками типа object. Класс object является
базовым для всех остальных классов, таким образом, по ссылке типа object
можно обращаться к объекту любого типа. Недостатком такого приема
является несоблюдение типовой безопасности. Для преобразования типа
object в конкретный тип данных необходимо приведение типов, которое
может быть источником ошибок.
      Применение     обобщений,     напротив,    обеспечивает    типовую
безопасность и тем самым не требуют выполнения приведения типов для
преобразования объекта или другого типа обрабатываемых данных.
      Таким образом, обобщения расширяют возможности повторного
использования кода и позволяют делать это надежно и просто.
      Рассмотрим пример использования обобщений при разработке класса
для хранения множества элементов некоторого типа.

      // обобщенный класс «Множество»
      class Set
      {
         // массив элементов множества,
         // элементы имеют обобщенный тип Т
         T[] elements;

         // конструктор класса
         public Set(T[] a)
         {

116