Создание обобщенных методов

Создание обобщенных методов

Чтобы научиться интегрировать обобщения в проекты, мы начнем с простого примера обычной подпрограммы свопинга. Целью этого примера является построение метода обмена, который сможет работать c любыми типами данных (характеризуемыми значениями или ссылками), используя для этого один параметр типа. В силу самой природы алгоритмов свопинга входные параметры будут посылаться по ссылке (с помощью ключевого слова C# ref). Вот соответствующая полная реализация.

// Этот метод переставляет любые два элемента,

// определенные параметром типа ‹Т›.

static void Swap‹T›(ref T a, ref Т b) {

 Console.WriteLine ("Методу Swap () передано {0}", typeof(T));

 Т temp;

 temp = а;

 а = b;

 b = temp;

}

Обратите внимание на то, что обобщенный метод определяется с помощью указания параметра типа, размещаемого после имени метода, но перед списком параметров. Здесь вы заявляете, что метод Swap() может работать с любыми двумя параметрами типа ‹Т›. Просто для информации вы выводите имя типа соответствующего заменителя на консоль с помощью оператора C# typeof(). Теперь рассмотрите следующий метод Main(), в котором происходит обмен между целочисленными и строковыми типами.

static void Main(string[] args) {

 Console.WriteLine("***** Забавы с обобщениями ***** ");

 // Обмен между двумя целыми.

 int а = 10, b = 90;

 Console.WriteLine("До обмена: {0}, {l}", а, b);

 Swap‹int›(ref a, ref b);

 Console.WriteLine("После обмена: {0}, {1}", а, b);

 Console.WriteLine();

 // Обмен между двумя строками.

 string s1 = "Hello", s2 = "There";

 Console.WriteLine("До обмена: {0} {1}!", s1, s2);

 Swap‹string›(ref s1, ref s2);

 Console.WriteLine("После обмена: {0} {1}!", s1, s2);

 Console.ReadLine();

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Проблема обобщенных указателей

Из книги Вариации на тему STL. Адаптер обобщенного указателя на функцию-член класса автора Гусаров Михаил

Проблема обобщенных указателей Что такое обобщенные указатели и почему они полезны Представим себе некий объект, который имеет перегруженную операцию operator->(). Мы можем его представить себе как некий обобщенный указатель, который не является указателем в полном смысле


Перегрузка методов

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Перегрузка методов Подобно другим объектно-ориентированным языкам, язык C# позволяет типу перегружать его методы. Говоря простыми словами, когда класс имеет несколько членов с одинаковыми именами, отличающихся только числом (или типом) параметров, соответствующий член


Создание обобщенных структур (и классов)

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Создание обобщенных структур (и классов) Теперь, когда вы понимаете, как определять и вызывать обобщенные методы, давайте рассмотрим построение обобщенных структур (процедура построения обобщенных классов оказывается аналогичной). Предположим, что мы построили гибкую


Создание пользовательских обобщенных коллекций

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Создание пользовательских обобщенных коллекций Итак, пространство имен System.Collections.Generic предлагает множество типов, позволяющих создавать эффективные контейнеры, удовлетворяющие требованиям типовой безопасности. С учетом множества доступных вариантов очень велика


Создание обобщенных базовых классов

Из книги VBA для чайников автора Каммингс Стив

Создание обобщенных базовых классов Перед рассмотрением обобщенных интерфейсов следует указать на то, что обобщенные классы могут быть базовыми для других классов и могут таким образом определять любое число виртуальных и абстрактных методов. Однако производные типы


Создание обобщенных интерфейсов

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

Создание обобщенных интерфейсов Вы уже видели при рассмотрении пространства имен System.Collections. Generiс, что обобщенные интерфейсы в C# также допустимы (например, IEnumerable‹Т›). Вы, конечно, можете определить свои собственные обобщенные интерфейсы (как с ограничениями, так и без


Отображение методов

Из книги Социальные сети [Источники новых клиентов для бизнеса] автора Парабеллум Андрей Алексеевич

Отображение методов Мы модифицируем класс Program, чтобы определить ряд статических методов, каждый из которых будет иметь один параметр System.Type и возвращать void. Начнем с метода ListMethods(), который (как вы можете догадаться сами) печатает имена всех методов, определенных


7.2. Классификация IPC-методов в Unix

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

7.2. Классификация IPC-методов в Unix Как и в однопроцессных структурах программ, простейшая организация является наилучшей. В оставшейся части данной главы представлены IPC-методики приблизительно в порядке возрастания сложности их программирования. Прежде чем использовать


11.1.4. Создание атрибутов и методов уровня класса

Из книги C++ для начинающих автора Липпман Стенли

11.1.4. Создание атрибутов и методов уровня класса Метод или атрибут не всегда ассоциируются с конкретным экземпляром класса, они могут принадлежать самому классу. Типичным примером метода класса может служить new, он вызывается для создания новых экземпляров, а потому не


Создание методов

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Создание методов Методы представляют собой обычные процедуры типов Sub и Function, которым выпало разместиться в модуле класса. Конечно, в большинстве случаев метод должен делать нечто, напрямую связанное с самим объектом, преобразуя данные, хранимые объектом. Но, при желании,


Создание собственных методов DrawPie и FillPie

Из книги автора

Создание собственных методов DrawPie и FillPie В данный момент .NET Compact Framework не поддерживает графические методы DrawPiе и FillPie, которые позволяли бы рисовать круговые секторы. Но можно создать свою версию этих методов, используя математические вычисления, как показано в листинге


Выбор методов лидгена

Из книги автора

Выбор методов лидгена Мы поговорили о пассивных методах лидгена и методах лидгена в целом. Итак, активные методы – это в основном реклама плюс активный выход в социальные сети. Добавим в эту категорию также и экспертные комментарии в сообществах (см выше).Если у вас пока


7.16. Активизация фоновых методов

Из книги автора

7.16. Активизация фоновых методов Постановка задачи Необходимо найти простой способ создания потоков так, чтобы с потоками не приходилось работать


Ограничения на параметры обобщенных подпрограмм и классов

Из книги автора

Ограничения на параметры обобщенных подпрограмм и классов По умолчанию с переменными, имеющими тип параметра обобщенного класса или подпрограммы, внутри методов обобщённых классов и обобщенных подпрограмм можно делать лишь ограниченный набор действий: присваивать и