Читаем C# 4.0 полное руководство - 2011 полностью

компиляции, является главным преимуществом обобщений. Несмотря на то что в C# всегда имелась возможность создавать "обобщенный" код, используя ссылки на объекты, такой код не был типизированным, т.е. не обеспечивал типовую безопасность, а его неправильное применение могло привести к исключительным ситуациям во время выполнения. Подобные ситуации исключаются благодаря обобщениям. По существу, обобщения переводят ошибки при выполнении в разряд ошибок при компиляции. В этом и заключается основная польза от обобщений.

В рассматриваемой здесь необобщенной версии программы имеется еще один любопытный момент. Обратите внимание на то, как тип переменнойobэкземпляра классаNonGenсоздается с помощью методаShowType в следующей строке кода.

Console.WriteLine("Тип переменной ob: " + ob.GetType );

Как пояснялось в главе 11, в классеobjectопределен ряд методов, доступных для всех типов данных. Одним из них является методGetType , возвращающий объект классаТуре,который описывает тип вызывающего объекта во время выполнения. Следовательно, конкретный тип объекта, на который ссылается переменнаяob,становится известным во время выполнения, несмотря на то, что тип переменнойobуказан в исходном коде какobject.Именно поэтому в среде CLR будет сгенерировано исключение при попытке выполнить неверное приведение типов во время выполнения программы.

Обобщенный класс с двумя параметрами типа

В классе обобщенного типа можно указать два или более параметра типа. В этом случае параметры типа указываются списком через запятую. В качестве примера ниже приведен классTwoGen,являющийся вариантом классаGenс двумя параметрами типа.

// Простой обобщенный класс с двумя параметрами типа Т и V.

using System;

class TwoGenCT, V> {

T obi;

V ob2;

// Обратите внимание на то, что в этом конструкторе // указываются параметры типа Т и V. public TwoGen(Т ol, V о2)    {

obi = ol; оЬ2 = о2;

}

// Показать типы Т и V. public void showTypes {

Console.WriteLine("К типу T относится " + typeof(Т));

Console.WriteLine("К типу V относится " + typeof(V));

}

return obi;

}

public V Get0bj2 { return ob2;

}

}

// Продемонстрировать применение обобщенного класса с двумя параметрами типа, class SimpGen {

static void Main {

TwoGenCint, string> tgObj =

new TwoGenCint, string>(119, "Альфа Бета Гамма");

// Показать типы. tgObj.showTypes;

// Получить и вывести значения, int v = tgObj.getobl;

Console.WriteLine("Значение: " + v); string str = tgObj.GetObj2;

Console.WriteLine("Значение: " + str);

}

}

Эта программа дает следующий результат.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных