Создание обобщенных методов
Создание обобщенных методов
Чтобы научиться интегрировать обобщения в проекты, мы начнем с простого примера обычной подпрограммы свопинга. Целью этого примера является построение метода обмена, который сможет работать 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();
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Выбор методов лидгена
Выбор методов лидгена Мы поговорили о пассивных методах лидгена и методах лидгена в целом. Итак, активные методы – это в основном реклама плюс активный выход в социальные сети. Добавим в эту категорию также и экспертные комментарии в сообществах (см выше).Если у вас пока
Проблема обобщенных указателей
Проблема обобщенных указателей Что такое обобщенные указатели и почему они полезны Представим себе некий объект, который имеет перегруженную операцию operator->(). Мы можем его представить себе как некий обобщенный указатель, который не является указателем в полном смысле
Создание методов
Создание методов Методы представляют собой обычные процедуры типов Sub и Function, которым выпало разместиться в модуле класса. Конечно, в большинстве случаев метод должен делать нечто, напрямую связанное с самим объектом, преобразуя данные, хранимые объектом. Но, при желании,
7.2. Классификация IPC-методов в Unix
7.2. Классификация IPC-методов в Unix Как и в однопроцессных структурах программ, простейшая организация является наилучшей. В оставшейся части данной главы представлены IPC-методики приблизительно в порядке возрастания сложности их программирования. Прежде чем использовать
11.1.4. Создание атрибутов и методов уровня класса
11.1.4. Создание атрибутов и методов уровня класса Метод или атрибут не всегда ассоциируются с конкретным экземпляром класса, они могут принадлежать самому классу. Типичным примером метода класса может служить new, он вызывается для создания новых экземпляров, а потому не
Перегрузка методов
Перегрузка методов Подобно другим объектно-ориентированным языкам, язык C# позволяет типу перегружать его методы. Говоря простыми словами, когда класс имеет несколько членов с одинаковыми именами, отличающихся только числом (или типом) параметров, соответствующий член
Создание обобщенных структур (и классов)
Создание обобщенных структур (и классов) Теперь, когда вы понимаете, как определять и вызывать обобщенные методы, давайте рассмотрим построение обобщенных структур (процедура построения обобщенных классов оказывается аналогичной). Предположим, что мы построили гибкую
Создание пользовательских обобщенных коллекций
Создание пользовательских обобщенных коллекций Итак, пространство имен System.Collections.Generic предлагает множество типов, позволяющих создавать эффективные контейнеры, удовлетворяющие требованиям типовой безопасности. С учетом множества доступных вариантов очень велика
Создание обобщенных базовых классов
Создание обобщенных базовых классов Перед рассмотрением обобщенных интерфейсов следует указать на то, что обобщенные классы могут быть базовыми для других классов и могут таким образом определять любое число виртуальных и абстрактных методов. Однако производные типы
Создание обобщенных интерфейсов
Создание обобщенных интерфейсов Вы уже видели при рассмотрении пространства имен System.Collections. Generiс, что обобщенные интерфейсы в C# также допустимы (например, IEnumerable‹Т›). Вы, конечно, можете определить свои собственные обобщенные интерфейсы (как с ограничениями, так и без
Отображение методов
Отображение методов Мы модифицируем класс Program, чтобы определить ряд статических методов, каждый из которых будет иметь один параметр System.Type и возвращать void. Начнем с метода ListMethods(), который (как вы можете догадаться сами) печатает имена всех методов, определенных
7.16. Активизация фоновых методов
7.16. Активизация фоновых методов Постановка задачи Необходимо найти простой способ создания потоков так, чтобы с потоками не приходилось работать
Создание собственных методов DrawPie и FillPie
Создание собственных методов DrawPie и FillPie В данный момент .NET Compact Framework не поддерживает графические методы DrawPiе и FillPie, которые позволяли бы рисовать круговые секторы. Но можно создать свою версию этих методов, используя математические вычисления, как показано в листинге
Ограничения на параметры обобщенных подпрограмм и классов
Ограничения на параметры обобщенных подпрограмм и классов По умолчанию с переменными, имеющими тип параметра обобщенного класса или подпрограммы, внутри методов обобщённых классов и обобщенных подпрограмм можно делать лишь ограниченный набор действий: присваивать и