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.


 

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

9248. Гражданско-процессуальное право 57.5 KB
  ТЕМА №1: Гражданско-процессуальное право. формы защиты субъективных прав. Судебная форма защиты. гражданский процесс: понятие, виды, стадии, цель и задачи. гражданское процессуальное право: понятие, предмет, метод, система...
9249. Гражданские процессуальные принципы 38 KB
  ТЕМА №2: Гражданские процессуальные принципы понятие и классификация принципов ГПП принцип законности принцип состязательности принцип диспозитивности принципы непосредственности и непрерывности конституционные пр...
9250. Гражданские процессуальные правоотношения 62 KB
  Тема №3: Гражданские процессуальные правоотношения. понятие гражданского процессуального правоотношения классификация гражданских процессуальных правоотношений элементы гражданских процессуальных правоотношений основания возн...
9251. Стороны в гражданском судопроизводстве 47 KB
  Тема №4: Стороны в гражданском судопроизводстве. понятие сторон процессуальные права и обязанности сторон процессуальное соучастие надлежащая и ненадлежащая сторона. Замена не надлежащего ответчика гражданское процессуа...
9252. Третьи лица в гражданском судопроизводстве 43 KB
  Тема №5. Третьи лица в гражданском судопроизводстве. понятие и виды 3-х лиц 3-е лица, заявляющие самостоятельные требования относительно предмета спора. 3-е лица, не заявляющие самостоятельные требования относительно предмета спора...
9253. Участие прокурора и субъектов, защищающих от своего имени права и интересы других лиц, в гражданском судопроизводстве 65.5 KB
  Тема №6. Участие прокурора и субъектов, защищающих от своего имени права и интересы других лиц, в гражданском судопроизводстве. задачи прокуратуры в гражданском судопроизводстве. цель и основания участия прокурора в гражданском судопроиз...
9254. Судебное представительство 61.5 KB
  Тема №7. Судебное представительство. понятие представительства в суде виды представительства в суде полномочия и их оформление ФЗ от 31.05.2002г. Об адвокатской деятельности и адвокатуре в РФ. Постановление Пленума Ве...
9255. Гражданская процессуальная ответственность. 54.5 KB
  Тема № Гражданская процессуальная ответственность. понятие и значение гражданской процессуальной ответственности предпосылки и основания привлечения к гражданской процессуальной ответственности виды гражданской процессуальной ответ...
9256. Подведомственность гражданских дел 50 KB
  Тема №9. Подведомственность гражданских дел. понятие и виды подведомственности судебная подведомственность ГД правовые последствия не подведомственности дела суду Постановление Пленума ВС РФ от 18.08.1992г. №12/12 НК, СК, ФЗ «О тре...