46233

Шаблоны типа

Доклад

Информатика, кибернетика и программирование

Шаблоны предназначены для кодирования обобщённых алгоритмов без привязки к типам данных. Пример: Необходимо реализовать функцию выполняющую вычисление формулы

Русский

2013-11-20

14.38 KB

0 чел.

Шаблоны типа

Обобщённое программирование —такое описание данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание.

Одним из механизмов обобщенного программирования являются шаблоны.

Шаблоны предназначены для кодирования обобщённых алгоритмов, без привязки к типам данных.

Пример: Необходимо реализовать функцию, выполняющую вычисление формулы

2*x + (x*x + 1)/(2*x)

Шаблоны типа

double F(double x) {

 double x2 = 2*x;

 return x2 + (x*x + 1)/x2;

}

int F(int x) {

 int x2 = 2*x;

 return x2 + (x*x + 1)/x2;

}

Для каждого нового типа данных,  участвующего в вычислении выражения,  придется создавать новую функцию F. Вместо этого можно прописать всего один шаблон функции.

Шаблоны типа для C#

Для описания простейшего шаблона достаточно перечислить идентификаторы  типов в угловых скобках после имени  класса или метода:

class Example<T> { /*…*/ }

Шаблон типа:

// Двусвязный список.

public class LinkedList<T> {

 // Узел списка.

 class Node {

   public T data;      // Данные.

   public Node next;    // Cледующий узел.

   public Node prev;    // Предыдущий узел.

 };

Node first;    // Первый узел списка.

 Node last;    // Последний узел списка.

Тип Pair должен иметь корректную реализацию метода ToString для вывода его содержимого в терминал. Тип Pair примет следующий вид:

 struct Pair {

   int x, y;

   public Pair(int x, int y) {

     this.x = x;

     this.y = y;

   }

public override string ToString() {

     return "(" + x + ", " + y + ")";

   }

 }

Ограничения шаблонов типа в C#

Ключевое слово where. Предложение where используется в определении универсального типа для указания ограничений типов, которые могут использоваться в качестве аргументов параметра типа, определенного в универсальном объявлении.

Существуют следующие варианты ограничений:

Ограничения шаблонов типа в C#

Ключевое слово where

• where T: struct

Аргумент типа должен иметь тип значения. Допускается указание любого типа значения, кроме Nullable

• where T : class

Аргумент типа должен иметь ссылочный тип; это также распространяется на тип любого класса, интерфейса, делегата или массива.

• where T : new()

Аргумент типа должен иметь открытый конструктор без параметров. При использовании с другими ограничениями ограничение new()должно устанавливаться последним.

• where T : <base class name>

Аргумент типа должен являться или быть производным от указанного базового класса.

• where T : <interface name>

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

• where T : U

Аргумент типа, предоставляемый в качестве T, должен совпадать с аргументом, предоставляемым в качестве U, или быть производным от него.

Например:

В качестве аргумента шаблона LinkedList могут выступать только классы, наследующие от System.IDisposable.


 

А также другие работы, которые могут Вас заинтересовать

66693. Лицензирование программного обеспечения 46.26 KB
  Защита авторских прав распространяется на все виды программного обеспечения в том числе и на операционные системы и программные комплексы независимо от того на каком языке они написаны и в какой форме выражены включая исходный текст и объектный код ГК РФ часть 4 гл.
66694. А.С. Макаренко 142 KB
  Одну з кращих своїх статей, написану для ювілейного збірника з приводу п'ятиліття комуни імені Ф.Э.Дзержинського, Антон Семенович так і назвав «Педагоги знизують плечима». Ці люди не розуміли, що вже давно наступив момент, коли без теорії не можна стати гарним практиком...
66695. МАТРИЧНЫЕ (ИГОЛЬЧАТЫЕ) ПРИНТЕРЫ 105.5 KB
  В зависимости от технологии печати различают матричные струйные лазерные светодиодные сублимационные принтеры. От их количества зависит качество печати – в основном на рынке представлены матричные принтеры печатающая головка которых имеет 24 иголки плотность печати до 180 dpi.
66696. Технология и организация междугордных перевозок 92.5 KB
  За последние 10 лет парк автомобилей в России вырос почти в 25 раза. В 1999 году произошло существенное на 61 увеличение количества грузовых автомобилей в экономическом комплексе и впервые за последние годы зафиксирован рост объема грузовых автомобильных перевозок....
66697. Жизнь и научная деятельность Бориса Борисовича Полынова 376.55 KB
  Крупную роль в советском почвоведении играл Борис Борисович Полынов 1877 1952 гг. вышла в свет его книга Кора выветривания в которой были глубоко и всесторонне охарактеризованы основные фазы и главные типы кор выветривания Полынов 1934. Полынов одна из самых ярких личностей в советском почвоведении.
66699. Научный вклад Сергея Николаевича Виноградского в почвоведение 159.5 KB
  Кроме того Сергей Николаевич Виноградский объяснил процесс почвообразования показав что в почве существуют азотофиксирующие бактерии способные давать растениям необходимый для роста азот являющийся одним из главных лимитирующих факторов развития растений.
66700. Добровольский Глеб Всеволодович 111.53 KB
  Это вызвало повышенный интерес к проблемам экологии к проблемам биосферы Добровольский Г. Биография Глеб Всеволодович Добровольский академик Российской академии наук Президент Общества почвоведов при РАН известный почвоведэколог научная организационная...