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.


 

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

2764. Детали машин. Контрольные задания. Примеры решения 1.26 MB
  Данные методические указания и контрольные задания составлены в полном соответствии с программами курсов Детали машин, Детали машин и основы конструирования и Детали машин и подъемно-транспортные устройства и предназначены студентам всех специальностей заочного факультета, для которых по учебному плану предусмотрены такие курсы.
2765. Анализ наилучшего и наиболее эффективного использования земельного участка в калининском районе Санкт-Петербурга 6.82 MB
  Целью реализации анализируемого проекта является расширение действующего объекта коммерческой недвижимости, повышение его потребительских свойств и конкурентоспособности для увеличения доходов от эксплуатации объекта. Проект предполагает реконструкц...
2766. Проектирование сварных конструкций 2.93 MB
  Конструкции сварные и их проектирование как учебная дисциплина имеет свои задачи - системное формирование у студентов знаний и общих представлений о современном состоянии теоретических основ проектирования сварных конструкций, методах расчета и проектирования сварных конструкций.
2767. Наследственное право и его состав 343.51 KB
  Наследство и его состав Наследованием является переход прав и обязанностей умершего (наследодателя) к его наследникам. Наследование регулируется в основном ГК РФ (часть третья), а также другими законами, а в случаях, предусмотренных законом...
2768. Дорожно-транспортное происшествие 44.42 KB
  Дорожно-транспортное происшествие. Травматизм при дорожно-транспортных происшествиях (ДТП) – одна из наиболее частых бед, которыми человечество расплачивается за удобства, обретенные с техническим прогрессом. Как уберечься пешеходу от встречи с...
2769. Применение закона Ома к цепям переменного тока 69 KB
  Применение закона Ома к цепям переменного тока Вариант лабораторной работы №324-дубль отличается от предыдущей иной формой представления результатов. По этой причине в описании отсутствует Введение – оно является общим для обоих вариантов....
2770. Мощность и коэффициент мощности в цепях переменного тока 287.5 KB
  Мощность и коэффициент мощности в цепях переменного тока Приборы и принадлежности: регулятор напряжения РНШ, проволочный реостат, магазин емкостей, катушка переменной индуктивности, амперметр, вольтметр, ваттметр. Введение. Пусть к клеммам источника...
2771. Вынужденные электрические колебания 114 KB
  Вынужденные электрические колебания Приборы и принадлежности: лабораторная панель Колебательный контур, генератор сигналов низкочастотный Г3-120, вольтметр В7-38, осциллограф С1-94. Введение. Рассмотрим электрическую цепь, состоящую из резистора с...
2772. Электронный осциллограф: устройство и применение 453 KB
  Электронный осциллограф. устройство и применение Приборы и принадлежности. осциллограф С1-1, понижающий трансформатор 220/127 В, реостат, вольтметр, миллиамперметр, магазин сопротивлений, лабораторная панель. Введение. Электронный осциллограф предна...