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.


 

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

1062. Учет финансовой отчетности в процессе управления предприятием ООО Стиль 411 KB
  Финансовая отчетность и ее роль в информационном обеспечении управления предприятием. Методы анализа устойчивости финансового состояния в процессе управления предприятием. Составление и анализ финансовой отчетности в процессе управления предприятием (на материалах ООО Стиль). Анализ устойчивости финансового состояния по данным финансовой отчетности.
1063. Створення таблиць і форм мовою html 528 KB
  Створення форм і таблиць, вивчення синтаксису і тегів цих елементів, набуття навиків у використанні цих елементів при розробці власних сторінок.
1064. Теоретичні засади державного пенсійного страхування та перспективи його розвитку 569 KB
  Теоретичні засади дослідження системи пенсійного страхування в Україні. Особливості розвитку системи державного пенсійного страхування в країнах світу. Принципи загальнодержавного пенсійного страхування в Україні. Правова основа державного пенсійного страхування в Україні. Тенденції розвитку державного пенсійного страхування в Україні.
1065. Проектування індивідуального житлового будинку в м. Донецьк 441.5 KB
  Проектований двоповерховий житловий будинок має в плані не правильну конфігурацію. Будинок по конструктивній схемі відноситься до будинків з поперечним і повздовжнім розміщенням несучих стін і спиранням плит перекриття по двом сторонам. Зовнішні стіни в будинку виконані з легкої кладки товщиною 510 мм.
1066. Фотодатчики, их классификации, режимы работы и применение в биоинженерной технике 587 KB
  Основные понятия фотоэлектрических приборов. Основные характеристики фотоэлектрических преобразователей. Режимы работы датчиков. Области применения медико-биологической практике. Дополнительные возможности датчиков.
1067. Культура России второй половины ХІХ - первой половины ХХ столетия 550 KB
  Факторы развития культуры в России. Крестьянская реформа 19 февраля 1861 года. Мировой революционный процесс и передовая западноевропейская общественная мысль. Метод критического реализма. Мотив слияния с природой, погружения в ее тайны и красоту.
1068. База данных Кадры 323 KB
  База данных Кадры предназначается для учета личного состава, что необходимо на любом, даже на самом маленьком предприятии. База данных Кадры дает возможность облегчить работу отдела кадров и применять различные запросы для поиска необходимых сведений о сотрудниках.
1069. Бухгалтерский учет объектов основных средств. 411 KB
  Понятие и классификация основных средств. Организация системы бухгалтерского учета и анализ учетной политики. Методическое обеспечение бухгалтерского учета основных средств в ФГУП Росморпорт. Порядок проведения и учет результатов инвентаризацииосновных средств.
1070. Сетевое администрирование 411.5 KB
  Планирование сетевой инфраструктуры. Разработка механизма распространения политик безопасности на всю организацию. Выбор протоколов при планировании сетевой инфраструктуры. Планирование адресного пространства. Интеграция DNS зон и WINS. Защита сетей. Информационная безопасность.