Содержание

Слайд 2

IComparer

если первый объект больше второго, то возвращается число больше 0,
если меньше

IComparer если первый объект больше второго, то возвращается число больше 0, если
- то число меньше нуля;
если оба объекта равны, возвращается ноль.

Слайд 3

Реализация

Реализация

Слайд 4

IEnumerable

Интерфейс IEnumerable имеет метод, возвращающий ссылку на другой интерфейс - перечислитель:
public interface

IEnumerable Интерфейс IEnumerable имеет метод, возвращающий ссылку на другой интерфейс - перечислитель:
IEnumerable
{
    IEnumerator GetEnumerator();
}

Слайд 5

IEnumerator

Интерфейс IEnumerator определяет функционал для перебора внутренних объектов в контейнере.

IEnumerator Интерфейс IEnumerator определяет функционал для перебора внутренних объектов в контейнере.

Слайд 6

IEnumerator

public interface IEnumerator
{
    bool MoveNext(); // перемещение на одну позицию вперед в контейнере

IEnumerator public interface IEnumerator { bool MoveNext(); // перемещение на одну позицию
элементов
    object Current {get;}  // текущий элемент в контейнере
    void Reset(); // перемещение в начало контейнера
}

Слайд 7

Реализация

Реализация

Слайд 8

Реализация

Реализация

Слайд 9

Применение

Применение

Слайд 10

IDispolable

Предоставляет механизм для освобождения управляемых и неуправляемых ресурсов.
void Dispose()

IDispolable Предоставляет механизм для освобождения управляемых и неуправляемых ресурсов. void Dispose()

Слайд 11

Ресурсы

Существуют два различных подхода, которые можно применять для создания класса, способного производить

Ресурсы Существуют два различных подхода, которые можно применять для создания класса, способного
очистку и освобождать внутренние неуправляемые ресурсы.

Слайд 12

Ресурсы

Первый подход заключается в переопределении метода System.Object.Finalize() и позволяет гарантировать то, что

Ресурсы Первый подход заключается в переопределении метода System.Object.Finalize() и позволяет гарантировать то,
объект будет очищать себя сам во время процесса сборки мусора (когда бы тот не запускался) без вмешательства со стороны пользователя.

Слайд 13

Ресурсы

Второй подход предусматривает реализацию интерфейса IDisposable и позволяет обеспечить пользователя объекта возможностью

Ресурсы Второй подход предусматривает реализацию интерфейса IDisposable и позволяет обеспечить пользователя объекта
очищать объект сразу же по окончании работы с ним.
Однако если пользователь забудет вызвать метод Dispose(), неуправляемые ресурсы могут оставаться в памяти на неопределенный срок.

Слайд 14

Ресурсы

Если пользователь объекта не забыл вызвать метод Dispose(), можно проинформировать сборщик мусора

Ресурсы Если пользователь объекта не забыл вызвать метод Dispose(), можно проинформировать сборщик
о пропуске финализации, вызвав метод GC.SuppressFinalize().
Если же пользователь забыл вызвать этот метод, объект рано или поздно будет подвергнут финализации и получит возможность освободить внутренние ресурсы.

Слайд 15

Виды ресурсов

Неуправляемые ресурсы - это разнообразные файловые хэндлы, оконные, всякие объекты синхронизации,

Виды ресурсов Неуправляемые ресурсы - это разнообразные файловые хэндлы, оконные, всякие объекты
соединения с базой данных
Управляемые ресурсы - всё, что создаётся средствами .net, и все объекты

Слайд 16

Сборщик мусора

Сборщик мусора автоматически освобождает память, выделенную для управляемого объекта, если этот

Сборщик мусора Сборщик мусора автоматически освобождает память, выделенную для управляемого объекта, если
объект больше не используется. 
Сборщик мусора не имеет сведений о неуправляемых ресурсов, таких как дескрипторы окон, или открытые файлы и потоки.

Слайд 17

IDispolable

Использование метода Dispose, позволяет явно освобождать неуправляемые ресурсы вместе со сборщиком мусора.

IDispolable Использование метода Dispose, позволяет явно освобождать неуправляемые ресурсы вместе со сборщиком
Пользователь объекта может вызвать этот метод, когда объект больше не нужен.

Слайд 18

IDispolable

IDispolable

Слайд 19

IDispolable

Если есть подключение к файлу или к БД, которое «живет» на всем

IDispolable Если есть подключение к файлу или к БД, которое «живет» на
протяжении работы объекта класса, то в Displose в секторе удаления управляемой памяти нужно вызывать методы Dispose этих классов.