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.


 

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

49387. Проектирование линейной автоматической системы управления 1.07 MB
  Цель работы: для заданного объекта регулирования требуется спроектировать АСР с заданным типом регулятора (ПИ-регулятор). Процесс проектирования состоит из следующих этапов: Анализ объекта регулирования. Определение оптимальных настроек ПИ-регулятора. Анализ функционирования АСР с оптимальными настройками.
49389. Расчет снижения налогов для нормализации заработной платы 944 KB
  Анализ объекта управления. Синтез типовой системы управления. Синтез нетиповой системы управления.
49390. Масс-спектрометрия и ее использование 3.71 MB
  История массспектрометрии ведётся с основополагающих опытов Джона Томсона в начале XX века. Существенное отличие массспектрометрии от других аналитических физикохимических методов состоит в том что оптические рентгеновские и некоторые другие методы детектируют излучение или поглощение энергии молекулами или атомами а массспектрометрия непосредственно детектирует сами частицы вещества. Массспектрометрия в широком смысле это наука получения и интерпретации массспектров которые в свою...
49391. Прибор для исследования оптических приборов 5.26 MB
  В курсовой работе я реализовал все требования в задании, однако посчитал необходимым изображать также мнимые лучи, полученные в результате преломления света в рассеивающих линзах. Эти лучи изображаются, в отличие от «нормальных», пунктирной линией, начинаясь в точке преломления луча, и заканчиваясь в мнимом фокусе изображения.
49392. Описание структуры с именем NOTE 50.63 KB
  Описать структуру с именем NOTE, содержащую следующие поля: - фамилия, имя; - номер телефона; - дата рождения (массив из трех чисел); Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по датам рождения; - вывод на экран информации о человеке, номер телефона которого введен с клавиатуры; - если такого нет, выдать на дисплей соответствующее сообщение.
49393. Описание структуры с именем STUDENT 231 KB
  Содержание проекта: Постановка задачи и метод решения. Алгоритм модулей и главной функции. Листинг программы. Результаты тестирования программы. Таблица переменных, задействованных в программе. Список использованных источников.
49394. Гидравлический расчёт трубопровода 329.91 KB
  Значение кинематической вязкости жидкости при Т =20С м 2 с Выбор и обоснование расчетной схемы Рассматриваемый участок трубопровода представляет собой пять параллельных труб. Таким образом данный участок трубопровода относится к классу трубопроводов с параллельными участками. В результате расчета необходимо определить расходы через каждый участок трубопровода и построить гидравлические характеристики отдельных участков и всего трубопровода в целом. Список условных обозначений использованных в расчетах Величины: Q общий расход через...