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.


 

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

77956. Облік зобов’язань. Визнання та класифікація зобов’язань 112.5 KB
  Методологічні засади формування в бухгалтерському обліку інформації про зобов’язання та її розкриття у фінансовій звітності визначені Положенням (стандартом) бухгалтерського обліку 11 «Зобов’язання».
77957. Облік витрат діяльності підприємства 320 KB
  Витрати звітного періоду – це витрати, що визнаються або шляхом зменшення активів, або шляхом збільшення зобов’язань, що призводить до зменшення власного капіталу (за винятком зменшення капіталу внаслідок вилучення або розподілу власниками), за умови, що ці витрати можуть бути достовірно оцінені.
77958. Облік доходів і фінансових результатів 133 KB
  Інвестиційна діяльність – це придбання та реалізація тих необоротних активів, а також тих фінансових інвестицій, які не є складовою часткою еквівалентів грошових коштів.
77959. Фінансова звітність. Вимоги до фінансової звітності 190.5 KB
  Метою складання фінансової звітності є надання користувачам повної, правдивої та неупередженої інформації про фінансовий стан, результати діяльності підприємства (доходи, витрати, прибутки і збитки від діяльності) та руху грошових коштів підприємства за звітний період.
77960. Облік праці, її оплати та соціального страхування персоналу 152 KB
  Облік праці її оплати та соціального страхування персоналу. Організація праці облік особистого складу робітників та використання робочого часу. Фонд оплати праці та його склад. ПС БО Виплати робітникам Питання організації і оцінки праці регламентують документи: Кодекс законів про працю Закон України Про оплату праці Закон України Про колективні договори і угоди Податковий Кодекс України.
77961. Облік основних засобів 317.5 KB
  Облік основних засобів Поняття про основні засоби. Класифікація та оцінка основних засобів. Первинні документи з обліку основних засобів. Облік та порядок придбання вибуття ремонту основних засобів.
77962. Облік нематеріальних активів 64 KB
  Первинна вартість НМА придбаного в результаті обміну на подібний обєкт дорівнює залишковій вартості переданого нематеріального активу. Якщо залишкова вартість переданого обєкту перевищує його справедливу вартість то первинною вартістю НМА отриманого в обмін на подібний обєкт є його справедлива вартість з включенням різниці у фінансові результати витрати звітного періоду...
77963. Острый и хронический пиелонефрит 20.61 KB
  Наиболее частым возбудителем пиелонефрита является кишечная палочка реже стафилококки энтерококки протей клебсиелла. ХП как правило является следствием ранее перенесенного острого пиелонефрита. Факторы способствующие развитию пиелонефрита: нарушение оттока мочи создающее благоприятные условия для роста и размножения микроорганизмов: обратный заброс мочи рефлюксы на различных уровнях вследствие атонии мочевых путей опухоли мочевых путей и предстательной железы почечнокаменная болезнь; нарушение кровоснабжения почек...
77964. Гломерулонефрит 18.25 KB
  Острый гломерулонефрит – острое иммуновоспалительное заболевание почек с преимущественным поражением клубочков и в меньшей степени канальцев и интерстициальной ткани.