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.


 

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

59444. Сценарій вечора на тему: Нумо, дівчата 37 KB
  Стрибок через козла ноги нарізно біг по колоді біг по коридору з 6 обручів на віддалі 23 м два кувирки вперед біг стрибки з скакалкою. Веселі старти Стрибки з скакалкою: 1. Стрибки і біг з перешкодами: Стрибок через козла кувирок вперед...
59445. Cценарій: Інтелектуальна гра — КВК 45.5 KB
  Котра команда назбирає в своїй; карбничці більше фішок та і буде переможцем. Та от дружбу ціним більше Сперечатися не будем. Завдання: з поданих літер за 1 хв скласти якомога більше слів АБИ брат краб бант танк кат раб кабан.
59446. Сценарій: Інтелектуально-розважальна гра “Калейдоскоп” 49 KB
  Все починається зі слова. Шевченко: Ну що здавалося б слова Слова та голос більш нічого. На цій станції наші гравці покажуть який словарний запас української мови вони мають. Команди зачитують слова чиє слово буде останнє той і переміг.
59447. Cценарій святкової лінійки: Спорт, туризм, здоровя 26.5 KB
  Що тільки людина посіє - те й пожне. Порушиш правила здоровя - пожнеш хворобу. Тому сьогодні особливо важливо сформувати потребу в здоровому способі життя, а також в задоволенні від повноцінного життя.
59448. Сценарій концерту, присвячений Дню Вчителя: Учителю, ти є і будеш вічно! 50 KB
  Всім у цей день веселитись Сміятись співати на жарт не скупитись. Хай кращою буде учительська Доля Щоб добре вам всім працювалось у школі Рятує хай ангел-спаситель всіх вас Щасливі й здорові були щоб весь час.
59449. Cценарій: Ні наркотикам! 45 KB
  Мета. Пропагувати здоровий спосіб життя. Викликати в учнів негативне ставлення до наркоманії, до вживання наркотиків, які завдають великої шкоди здоровю людини.
59450. Cценарій: Світова Велич Шевченка (Брейн-ринг) 61.5 KB
  Талант Шевченка його допитливість незвичайна любов до всього рідного до свого пригнобленого народу до своєї культури що перебувала тоді в московському ярмі а також освіта начитаність праця над собою все це було ґрунтом для появи геніальних його творів.
59451. А щоб краща була в мене хата... (З історії української хати) 95.5 KB
  Обладнання: Ілюстрації картин з інтерєрами та елементами хати фотографі записи пісень про хату. Збудуй хати збудуй хату з лободи Збудуй хату з лободи з лободи з лободи А в чужую не веди не веди. З хати пішли в світ такі велетні як Тарас Шевченко.
59452. Відкритий позакласний захід: “Знай і умій” (деревообробка) 67.5 KB
  Обладнання та інструменти: Вивіска Знай і умій рекламні щити від спонсорів емблема конкурсу додатки до кожної з вікторин набори букв насіння і плоди дикоростучих дерев деревний матеріал пластилін столярні інструменти різні ребус...