Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Концепции ООП.docx
Скачиваний:
37
Добавлен:
29.03.2016
Размер:
152 Кб
Скачать
☆

9. Generic типы.

Generic типы

Generic типы (обобщения) используются в ситуациях, когда поведение алгоритма не зависит от типа данных, с которым осуществляется работа. Generic нужны для облегчения работы. Например обычный метод с int обрабатывает только целочисленные массивы, а с Generic работает с любым типом массивов.

static void WriteArr(int[] arr)

{

foreach (var item in arr)

Console.WriteLine(item);

}

Обобщённые методы

void WriteArr<T> ( T[] arr ) {}

Обобщённые типы (классы и структуры)

Class MyList<T>

Struct Pair<Tkey, TValue>

Обобщённые интерфейсы

Interface IDrawable<T>

Обобщённые делегаты

delegate void DoSomething<T> (T x, T y)

Пример Generic

static void Print<T> (T[] arr)

{

foreach (var item in arr)

{

Console.Write(item);

}

}

static void Main(string[] args)

{

int[] = {....};

string[]s = {"....", "...",...};

Print <int>(i);

Print(S);

}

10. Ограничения Generic типов.

Ограничения Generic типов

Действия выполнимы только если компилятор о них знает:

T Max<T>( T, x, T, y)

{

return x>y ? x: y;

}

Правильная реализация:

T Max<T>( T, x, T, y) where T : IComparable<T>

{

return x.CompareTo(y) > 0 ? x:y;

}

Синтаксис:

where шаблон: список_ограничений

where T: struct Структура (value-type)

where T: class Класс (reference-type)

where T: new() Тип должен иметь конструктор по умолчанию

where T: имя класса Соответствует указанному классу или его потомкам where T: имя интерфейса Реализует указанный интерфейс

where TChild: TBase TChild — класс, являющийся потомком класса TBase

Пример Generic

static void Print<T> (T[] arr)

{

foreach (var item in arr)

{

Console.Write(item);

}

}

static void Main(string[] args)

{

int[] = {....};

string[]s = {"....", "...",...};

Print <int>(i);

Print(S);

}

11. Структуры данных. Динамический массив.

Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс. Назначение структур: повышении эффективности и производительности программ. Структуры относятся к типам значений, и поэтому ими можно оперировать непосредственно, а не по ссылке. Следовательно, для работы со структурой вообще не требуется переменная ссылочного типа, а это означает в ряде случаев существенную экономию оперативной памяти.

Динамический массив (размер меняется в процессе программы)

5

4

8

2

Плюсы: произвольный и последовательный доступ

Минусы: упорядочение, добавление и удаление элементов в начале, в произвольных позициях

Сортированный массив:

Плюсы: произвольный и последовательный доступ, поиск, упорядочение.

Минусы: добавление и удаление элементов.